TSQL获取过去10周的日期范围

时间:2015-01-30 15:28:49

标签: sql tsql sql-server-2012

如何在TSQL中获取结果集,其日期范围为过去10周,包括作为列的周。

Date                 WeekNo
2014-11-21           1 
2014-11-22           1 
2014-11-23           1 
....
2014-11-28           2 
2014-11-29           2 

我能够在另一个问题的帮助下把它放在一起,但我没有在其中加入一周。

DECLARE @DateFrom smalldatetime, @DateTo smalldatetime;
SET @DateFrom= DATEADD(week,-10, GETDATE());
SET @DateTo=GETDATE();
-------------------------------
WITH T(date)
AS
( 
SELECT @DateFrom 
UNION ALL
SELECT DateAdd(day,1,T.date) FROM T WHERE T.date < @DateTo
)
SELECT date FROM T OPTION (MAXRECURSION 32767);

1 个答案:

答案 0 :(得分:1)

如果您的上述查询有效,您可以只进行日期算术以获得一周:

WITH T(date) AS
     (SELECT @DateFrom 
      UNION ALL
     SELECT DateAdd(day,1,T.date) FROM T WHERE T.date < @DateTo
     )
SELECT date,
       1 + (datediff(day, @DateFrom, date)  / 7)
FROM T
OPTION (MAXRECURSION 32767);