我有一个查询,它根据他们的活动日期带来数据。查询如下:
where al.ACTIVITY_DATE between '2017-01-01 00:00:00.000' and '2018-12-01 00:00:00.000'
它选择此数据范围内的所有活动。
现在是2019年,我需要将我的日期范围更改为2019-12-01 00:00:00:.000
。
我不想做的是每年手动更改该报告。是否可以选择最近两年的数据和今年到2019年12月31日的数据?
发布于 2019-01-04 23:50:30
只需执行以下操作:
WHERE al.ACTIVITY_DATE BETWEEN DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))
AND DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1)
这将动态地使其成为过去两年的数据。
这是前一年的开始
DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))
这是本年度的年末。
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1)
发布于 2019-01-05 00:15:31
我认为这是推导出去年年初的最简单方法:
DECLARE @start date = DATEFROMPARTS(YEAR(GETDATE())-1,1,1);
-- 2018-01-01
然后,这是执行去年和今年的完整日期范围查询的最简单方法,而无需担心数据类型、舍入等(read this to see why BETWEEN
is a bad idea)。
...
WHERE al.ACTIVITY_DATE >= @start
AND al.ACTIVITY_DATE < DATEADD(YEAR, 2, @start); -- 2020-01-01
https://stackoverflow.com/questions/54042064
复制相似问题