Aan de slagGa gratis aan de slag

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

Cursus bekijken

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 ___)
Code bewerken en uitvoeren