Создание временного ряда на год
Цель этого упражнения — сформировать ряд дат на протяжении одного года. Для этого потребуются две функции для работы с датой и временем:
GETDATE()DATEADD(datepart, number, date)
Функция GETDATE() возвращает текущее время (например, 2019-03-14 20:09:14), а DATEADD(month, 1, GETDATE()) — текущую дату плюс один месяц (например, 2019-04-14 20:09:14).
Чтобы получить ряд дат на год, необходимо выполнить 365 шагов рекурсии.
Для этого увеличьте количество итераций с помощью OPTION (MAXRECURSION n), где n — это нужное число итераций.
Это упражнение является частью курса
Иерархические и рекурсивные запросы в SQL Server
Инструкции к упражнению
- Инициализируйте текущее время как
time. - Выберите CTE рекурсивно и объедините якорный и рекурсивный элементы с помощью правильного оператора.
- Ограничьте количество итераций значением, равным количеству дней в году минус 1.
- Увеличьте максимальное количество итераций до числа дней в году с помощью
OPTION (MAXRECURSION n).
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
WITH time_series AS (
SELECT
-- Get the current time
___ AS time
UNION ALL
SELECT
DATEADD(day, 1, time)
-- Call the CTE recursively
FROM ___
-- Limit the time series to 1 year minus 1 (365 days -1)
WHERE time < GETDATE() + ___)
SELECT time
FROM time_series
-- Increase the number of iterations (365 days)
OPTION(MAXRECURSION ___)