Maak een tijdreeks van een jaar
Het doel van deze oefening is om een reeks dagen voor een jaar te maken. Voor deze taak gebruik je de volgende twee tijd-/datumfuncties:
GETDATE()DATEADD(datepart, number, date)
Met GETDATE() krijg je de huidige tijd (bijv. 2019-03-14 20:09:14) en met DATEADD(month, 1, GETDATE()) krijg je de huidige datum plus één maand (bijv. 2019-04-14 20:09:14).
Om een reeks dagen voor een jaar te krijgen, heb je 365 recursiestappen nodig.
Verhoog daarom het aantal iteraties met OPTION (MAXRECURSION n), waarbij n het aantal iteraties voorstelt.
Deze oefening maakt deel uit van de cursus
Hiërarchische en recursieve queries in SQL Server
Oefeninstructies
- Initialiseer de huidige tijd als
time. - Selecteer de CTE recursief en combineer het anchorgedeelte en het recursieve deel met de juiste instructie.
- Beperk het aantal iteraties tot het aantal dagen in een jaar min 1.
- Verhoog het maximale aantal iteraties tot het aantal dagen in een jaar met
OPTION (MAXRECURSION n).
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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 ___)