【发布时间】:2010-10-29 07:49:59
【问题描述】:
我有一个日期范围,开始日期是今天之前的 2 年。 例如)'05/29/2007' ~ '05/29/2009'。
如何突破日期范围以便获得如下列表?
(开始日期以“05/27/2007”开头,而不是“05/29/2007”,因为工作日的开始是星期日,而“05/27/2007”是“05/29”的一周的第一天/2007' 和最后一个 EndDate 的推理相同,即 2009 年 5 月 30 日,即星期六)
StartDate EndDate
05/27/2007 06/02/2007
06/03/2007 06/09/2007
...
05/24/2009 05/30/2009
[UPDATE]这是我的最终查询
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
【问题讨论】:
-
感谢您发布带有最终结果的更新。大多数人没有意识到它对其他人有多大帮助。
标签: sql tsql datetime date-range