以下是表格中的出席列表。每个月我都需要根据从20个月/上个月 - 19个/当月开始的截止期来监控出勤率。
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 - 2017/5/17。 以下是我的代码:
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
但是我意识到我的代码有一个缺陷,当Jun月份(截止时间为2017年5月20日 - 2017年6月19日)时,结果将是不正确的。 请建议 - 谢谢!
答案 0 :(得分:0)
您的查询语法不正确,您可以使用此
DECLARE @CurrentDate date = getdate()
DECLARE @20PreviousMonth date = dateadd(day,19,dateadd(month,datediff(month,0,@CurrentDate) - 1,0))
DECLARE @19CurrentMonth date = dateadd(day,18,dateadd(month,datediff(month,0,@CurrentDate) ,0))
SELECT
CONVERT(VARCHAR,[Date],103) AS Date,
Branch,
Attendance
FROM
Table_attd
WHERE
[Date] BETWEEN @20PreviousMonth AND @19CurrentMonth
答案 1 :(得分:0)
array(
array("number" => 1), array("number" => 2), array("number" => 3)
)
答案 2 :(得分:0)
解决此问题的另一种方法是创建“日期”表。
12000
然后只需通过'ReportingMonth'将此表连接到您的事实表和组。这使您可以从任何时间段快速调用数据,并允许在切换日期灵活。
答案 3 :(得分:0)
或者你可以试试这个。
$php_size = substr(ini_get('upload_max_filesize'), 0, -1) * 1048576;
if ($size > $php_size) {...}