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
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 ___)