我有一个查询,我想添加参数来计算移动年度(过去12个月的数字).我试图从今天开始减去12个月,所以如果今天是2012年8月1日那么我的@StartDate应该是'2011-09-01'而我的@EndDate应该是'2012-08-31'.那么如何更改设置我的参数以适应这个?
declare @StartDate DATE
declare @EndDate DATE
SET @StartDate = DATEADD(MONTH, -12, '2012-08-01')
SET @EndDate = DATEADD(MONTH, +1, '2012-08-01')
Run Code Online (Sandbox Code Playgroud)
DECLARE
@InputDate DATE,
@StartDate DATE,
@EndDate DATE
SET
@InputDate = '2012-08-01'
SET
@StartDate = DATEADD(MONTH, DATEDIFF(MONTH, 0, @InputDate) - 11, 0)
SET
@EndDate = DATEADD(DAY, -1, DATEADD(MONTH, 12, @StartDate))
Run Code Online (Sandbox Code Playgroud)
编辑:
不过,我不建议更换使用'2011-09-01',以'2012-08-31'在一年的表示.相反,'2011-09-01'以'2012-09-01'下列方式使用......
WHERE
table.dateField >= '2011-09-01'
AND table.dateField < '2012-09-01'
Run Code Online (Sandbox Code Playgroud)
这适用于所有Date和DateTime数据类型.即使价值在dateField8月31日下午2:30,这仍然有效.这是一个一刀切的做法,并使得很多更难以做出日期和时间界限的错误.