下表列出了一個表中的出席人數。每個月我都需要根據從20 /上個月開始的截止期 - 19 /當月來監控出勤率。SQL自動截斷期間日期
Date Branch Attendance
13/04/2017 Branch A 5
14/04/2017 Branch A 5
22/04/2017 Branch A 5
30/04/2017 Branch A 5
17/05/2017 Branch A 6
18/05/2017 Branch A 6
01/04/2017 Branch B 17
15/04/2017 Branch B 14
20/04/2017 Branch B 14
19/05/2017 Branch B 17
20/05/2017 Branch B 15
25/05/2017 Branch B 17
例如;我想在五月份展示,截止時間爲20/4/2017至19/5/2017。 下面是我的代碼:
SELECT
CONVERT(VARCHAR,Date,103) AS Date,
Branch,
Attendance
FROM
Table_attd
WHERE
Date>=DATEADD(DAY,(SELECT DATEDIFF (DAY,(DATEADD(DAY,0,GETEDATE())),
(DATEADD(MONTH,-1,CONVERT(DATETIME,CAST(YEAR(GETDATE()) AS
VARCHAR)+'/'+CAST(MONTH(GETDATE()) AS
VARCAHR)+'/'+'19',102))))),GETDATE())
AND Date<=DATEADD(DAY,-1,GETDATE())
結果:
Date Branch Attendance
22/04/2017 Branch A 5
30/04/2017 Branch A 5
17/05/2017 Branch A 6
18/05/2017 Branch A 6
20/04/2017 Branch B 14
19/05/2017 Branch B 17
但我意識到,我的代碼有漏洞,其中,當君月份(截止期爲20/5/2017 - 19/6/2017),結果將不正確。 請建議 - 謝謝!