我想獲取按日期排序的最後一年的數據記錄。但問題是我需要從去年那個月的第一天開始的數據。從整個月份數據庫中獲取最近一年的數據
例如,如果它的日期爲15-June-2016
,那麼我需要從1-June-2015
獲取數據。
我試着用
SELECT *
FROM Table
WHERE
date >= DATE_SUB(NOW(),INTERVAL 1 YEAR)
ORDER BY date
做,但它不工作。
我想獲取按日期排序的最後一年的數據記錄。但問題是我需要從去年那個月的第一天開始的數據。從整個月份數據庫中獲取最近一年的數據
例如,如果它的日期爲15-June-2016
,那麼我需要從1-June-2015
獲取數據。
我試着用
SELECT *
FROM Table
WHERE
date >= DATE_SUB(NOW(),INTERVAL 1 YEAR)
ORDER BY date
做,但它不工作。
爲了得到第上年同期的月份,使用方法:
DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101'))
您的查詢應該是:
SELECT *
FROM TABLE
WHERE
date > DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101'))
ORDER BY date
參考:
select *
from Table
where date >= DATE_SUB(NOW(),INTERVAL 1 YEAR) order by date asc;
NOW()在SQL Server中無效,也許你正在考慮getdate()? –
@bender我也需要MySql的這個東西。但是,您的解決方案准確提供1年,而不是從第一次約會開始。如果可以,請進一步幫助。 –
@RichBenner在mysql上測試5.6.17工作正常 – Bender
在你使用這個條件。
SELECT * FROM表其中date> DATEADD(年,-1,GETDATE()) - 天(GETDATE())+ 1按日期
感謝
試試這個
SELECT *
FROM Table
WHERE
date >= DATEADD(YEAR,-1,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0))
ORDER BY date
我認爲它應該是'... date> = DATEADD(...'包含來自1st的記錄。 –
異常 - 調用本地函數時的參數計數不正確' DATEDIFF」 –
好。接下來,提供適當的CREATE和INSERT語句,以及期望的結果。 – Strawberry