Створіть річний часовий ряд
Мета цієї вправи — створити послідовність днів на рік. Для цього потрібно використати дві функції роботи з датою/часом:
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 ___)