НачатьНачать бесплатно

Создание временного ряда на год

Цель этого упражнения — сформировать ряд дат на протяжении одного года. Для этого потребуются две функции для работы с датой и временем:

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