我有一个日期范围,开始日期是今天之前的 2 年。例如)“2007 年 5 月 29 日”~“2009 年 5 月 29 日”。
如何突破日期范围,以便获得如下列表?
(开始日期以“05/27/2007”开始,而不是“05/29/2007”,因为工作日的开始是星期日,而“05/27/2007”是“05/29/2007”的一周的第一天和最后一个 EndDate 的相同推理,05/30/2009,即星期六)
StartDate EndDate
05/27/2007 06/02/2007
06/03/2007 06/09/2007
...
05/24/2009 05/30/2009
[更新]这是我的最终查询
WITH hier(num, lvl) AS (
SELECT 0, 1
UNION ALL
SELECT 100, 1
UNION ALL
SELECT num + 1, lvl + 1
FROM hier
WHERE lvl < 100
)
SELECT num, lvl,
DATEADD(dw, -DATEPART(dw, '2007-05-29'), '2007-05-29') + num * 7,
DATEADD(dw, -DATEPART(dw, '2007-05-29'), '2007-05-29') + (num + 1) * 7
FROM hier
where num <= 104 --; 52 weeks/year * 2
ORDER BY num