2013-12-18 64 views
0

是否有可能在SQL中執行以下操作。我想編寫一個代碼,它將在特定日期之間返回記錄,但會在報告運行時自動更新。例如:日期之間在哪裏條款和移動日期

on 12/18我想從11-1到11/18和12/1到12/18返回記錄,所以我可以在我的報告中比較這些記錄的月份。

我明白,我可以這樣做:

WHERE 
[database] BETWEEN '2013-11-01' and DATEADD(Month, 1, getdate())) 
and not [database] IN ('2013-11-19 and '2013-11-30') 

,但我將不得不進入查詢每日更新之間沒有。我想這樣做,以便我可以在任何一天運行查詢並獲取上個月的記錄,直到本月的匹配日期。我目前一直在與此:

B.[datepaid] between DATEADD(Month, -1, getdate()) 
and DATEADD(MONTH, 1, getdate())) 

但它是從11月返回所有記錄。

+0

,它的所有十一月返回結果的事實是,因爲你有'2013-11-01'硬編碼在你的'where'條款。 – aledpardo

回答

0

我會推薦against using BETWEEN with Dates,因爲它可能會有一些意想不到的結果。但是,在你的情況,你可以使用:

WHERE ([Date] >= DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()) - 1, '19000101') 
AND [Date] < DATEADD(MONTH, -1, GETDATE())) 
OR ([Date] >= DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101') 
AND [Date] < GETDATE()); 

Demo on SQL Fiddle

相關問題