Sql-Server
選擇前 12 到 9 個月範圍內的日期
我需要幫助選擇前 12 到 9 個月之間的日期。例如,如果今天是 2017 年 2 月 22 日,我需要將日期範圍從 2016 年 2 月 1 日拉到 2016 年 3 月 31 日。
我可以使用以下方法選擇過去 12 個月的所有日期:
WHERE READDATE >= DATEADD(month, DATEDIFF(month, 0, DATEADD(MONTH,-12,GETDATE())), 0) AND READDATE <= DATEADD(s,-12,DATEADD(MONTH, DATEDIFF(MONTH,0,GETDATE()),0))
但我不知道如何排除前 9 個月之後的日期,給我 3 個月的視窗。
這應該有效:
... WHERE -- >= 2016-02-01 00:00:00.000 READDATE >= DATEADD(month, DATEDIFF(month, 0, GETDATE()) - 12, 0) -- < 2016-04-01 00:00:00.000 READDATE < DATEADD(month, DATEDIFF(month, 0, GETDATE()) - 10, 0) ...
請注意,對於日期,通常最好以這種方式進行比較:
X >= lower bound AND X < upper bound
這就是為什麼我更改
<= '20160331'
為< '20160401'
. 雖然使用似乎是 DATE 類型的樣本可以正常工作,但使用帶有 TIME 部分的日期可能會給出不正確的結果。