Zacznij terazZacznij za darmo

Tworzenie szeregu czasowego na rok

Celem tego ćwiczenia jest stworzenie szeregu dni dla jednego roku. Do tego zadania użyj dwóch funkcji daty i czasu:

  • GETDATE()
  • DATEADD(datepart, number, date)

Funkcja GETDATE() zwraca bieżący czas (np. 2019-03-14 20:09:14), natomiast DATEADD(month, 1, GETDATE()) zwraca bieżącą datę powiększoną o jeden miesiąc (np. 2019-04-14 20:09:14).

Aby uzyskać szereg dni dla roku, potrzebujesz 365 kroków rekurencji. Zwiększ liczbę iteracji za pomocą OPTION (MAXRECURSION n), gdzie n oznacza liczbę iteracji.

To ćwiczenie jest częścią kursu

Hierarchiczne i rekurencyjne zapytania w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Zainicjuj bieżący czas jako time.
  • Wybierz CTE rekurencyjnie i połącz człon bazowy z rekurencyjnym za pomocą odpowiedniej instrukcji.
  • Ogranicz liczbę iteracji do liczby dni w roku pomniejszonej o 1.
  • Zwiększ maksymalną liczbę iteracji do liczby dni w roku za pomocą OPTION (MAXRECURSION n).

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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 ___)
Edytuj i uruchom kod