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