如何在过去12个月内倒退?

时间:2015-06-12 10:37:15

标签: sql sql-server sql-server-2012

我需要创建一个仅检查前12个月的报告。我有这个代码正在运行:

DECLARE @date DATETIME = DATEADD(year,-1,GETDATE())
WHILE @date < GETDATE()
BEGIN
    --do marvelous things
    SET @date = DATEADD(MONTH,1,@date)
END

...然而,它从2014年6月开始带来了结果(显然是今天的2015年6月)。

我希望代码能够从2015年6月开始带回结果,然后再回到2014年6月,但我不确定如何做到这一点......

使用的是SQL Server 2012。

2 个答案:

答案 0 :(得分:0)

在查询中使用ORDER BY子句。例如:

select * from your_table where date_col between @start_date and @end_date order by date_col desc;

ASCDESC可用于以升序或降序显示结果。

因为,您正在循环SQL查询。然后,

更改

DECLARE @date DATETIME = DATEADD(year,-1,GETDATE())

DECLARE @date DATETIME = DATEADD(year,0,GETDATE()) // Current Year

并且

SET @date = DATEADD(MONTH,1,@date)

 SET @date = DATEADD(MONTH,-1,@date)  // substracting one month after each iteration.

答案 1 :(得分:0)

DECLARE @date DATETIME = GETDATE()
WHILE @date > DATEADD(year,-1,GETDATE())
BEGIN
    --do marvelous things
    SET @date = DATEADD(MONTH,-1,@date)
END