LoslegenKostenlos starten

Erstelle eine Zeitreihe für ein Jahr

Ziel dieser Übung ist es, eine Serie von Tagen für ein Jahr zu erstellen. Dafür musst du die folgenden zwei Zeit-/Datumsfunktionen verwenden:

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

Mit GETDATE() erhältst du die aktuelle Zeit (z. B. 2019-03-14 20:09:14) und mit DATEADD(month, 1, GETDATE()) bekommst du das aktuelle Datum plus einen Monat (z. B. 2019-04-14 20:09:14).

Um eine Serie von Tagen für ein Jahr zu erhalten, brauchst du 365 Rekursionsschritte. Erhöhe daher die Anzahl der Iterationen mit OPTION (MAXRECURSION n), wobei n die Anzahl der Iterationen darstellt.

Diese Übung ist Teil des Kurses

<Kurs>Hierarchische und rekursive Abfragen in SQL Server</Kurs>
Kurs ansehen

Übungsanweisungen

  • Initialisiere die aktuelle Zeit als time.
  • Wähle die CTE rekursiv aus und verbinde den Anker- mit dem rekursiven Member mit der richtigen Anweisung.
  • Begrenze die Anzahl der Iterationen auf die Tage eines Jahres minus 1.
  • Erhöhe die maximale Anzahl der Iterationen auf die Anzahl der Tage eines Jahres mit OPTION (MAXRECURSION n).

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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 bearbeiten und ausführen