LoslegenKostenlos loslegen

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

Hierarchische und rekursive Abfragen in SQL Server

Kurs anzeigen

Anleitung zur Übung

  • 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 Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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