2016-06-15 112 views
0

我想獲取按日期排序的最後一年的數據記錄。但問題是我需要從去年那個月的第一天開始的數據。從整個月份數據庫中獲取最近一年的數據

例如,如果它的日期爲15-June-2016,那麼我需要從1-June-2015獲取數據。

我試着用

SELECT * 
FROM Table 
WHERE 
    date >= DATE_SUB(NOW(),INTERVAL 1 YEAR) 
ORDER BY date 

做,但它不工作。

+1

好。接下來,提供適當的CREATE和INSERT語句,以及期望的結果。 – Strawberry

回答

1

爲了得到第上年同期的月份,使用方法:

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 

參考:

1
select * 
from Table 
where date >= DATE_SUB(NOW(),INTERVAL 1 YEAR) order by date asc; 
+0

NOW()在SQL Server中無效,也許你正在考慮getdate()? –

+0

@bender我也需要MySql的這個東西。但是,您的解決方案准確提供1年,而不是從第一次約會開始。如果可以,請進一步幫助。 –

+0

@RichBenner在mysql上測試5.6.17工作正常 – Bender

0

在你使用這個條件。

SELECT * FROM表其中date> DATEADD(年,-1,GETDATE()) - 天(GETDATE())+ 1按日期

感謝

2

試試這個

SELECT * 
FROM Table 
WHERE 
    date >= DATEADD(YEAR,-1,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)) 
ORDER BY date 
+0

我認爲它應該是'... date> = DATEADD(...'包含來自1st的記錄。 –

+0

異常 - 調用本地函數時的參數計數不正確' DATEDIFF」 –

相關問題