Получить все даты в диапазоне дат в SQL Server
Я получил этот пример из одного вопроса StackOverflow, который был задан, но я не смог заставить его работать в соответствии с моими потребностями.
WITH DateTable
AS
(
SELECT CAST('20110101' as Date) AS [DATE]
UNION ALL
SELECT DATEADD(dd, 1, [DATE]) FROM DateTable
WHERE DATEADD(dd, 1, [DATE]) < cast('20110131' as Date)
)
SELECT dt.[DATE] FROM [DateTable] dt
Вход-
ID | FromDate | ToDate
=============================
1 | 2011-11-10 | 2011-11-12
2 | 2011-12-12 | 2011-12-14
Выход -
SN | Dates |
==================
1 | 2011-11-10 |
2 | 2011-11-11 |
3 | 2011-11-12 |
4 | 2011-12-12 |
5 | 2011-12-13 |
6 | 2011-12-14 |
Посмотрите, этот код отлично работает для статических дат. Но в моем случае у меня есть таблица, содержащая три столбцаId, FromDate, ToDate
, Теперь я хочу преобразовать каждый диапазон в каждой строке в отдельные даты.
Я не могу заставить приведенный выше пример работать в том случае, если диапазон берется из таблицы, и, очевидно, этот запрос должен выполняться для каждой строки в таблице диапазонов, что является еще одной сложной задачей.
Пожалуйста помоги.