У меня есть диапазон дат, где дата начала - 2 года до сегодняшнего дня.
например, '05 / 29/2007 '~ '05 / 29/2009' .
Как мне выйти за пределы диапазона дат, чтобы получить список, подобный следующему?
(дата начала начинается с «27.05.2007», а не «29.05.2007», поскольку начало дня недели - воскресенье, а «05/27/2007» - первый день недели для 05.05. / 2007 'и те же рассуждения для последней Конечной даты, 30.05.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