TSQL 获取最近 10 周的日期范围

TSQL Get Date range of last 10 weeks with weeks

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

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

我可以在另一个问题的帮助下将它放在一起,但我没有在其中包含 weekNo。

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);

如果您的上述查询有效,您只需进行日期算术即可得到周数:

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);