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);
如何在 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);