下表列出了一个表中的出席人数。每个月我都需要根据从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),结果将不正确。 请建议 - 谢谢!