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