ПочатиПочніть безкоштовно

Створіть річний часовий ряд

Мета цієї вправи — створити послідовність днів на рік. Для цього потрібно використати дві функції роботи з датою/часом:

  • 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 ___)
Редагувати та запускати код