Crea una serie temporale di un anno
L'obiettivo di questo esercizio è creare una serie di giorni per un anno. Per questo compito devi usare le seguenti due funzioni di data/ora:
GETDATE()DATEADD(datepart, number, date)
Con GETDATE() ottieni l'ora corrente (ad es. 2019-03-14 20:09:14) e con DATEADD(month, 1, GETDATE()) ottieni la data corrente più un mese (ad es. 2019-04-14 20:09:14).
Per ottenere una serie di giorni per un anno ti servono 365 passi di ricorsione.
Quindi aumenta il numero di iterazioni con OPTION (MAXRECURSION n), dove n rappresenta il numero di iterazioni.
Questo esercizio fa parte del corso
Query gerarchiche e ricorsive in SQL Server
Istruzioni dell'esercizio
- Inizializza l'ora corrente come
time. - Seleziona la CTE in modo ricorsivo e unisci l'anchor e il membro ricorsivo con l'istruzione corretta.
- Limita il numero di iterazioni ai giorni in un anno meno 1.
- Aumenta il numero massimo di iterazioni al numero di giorni in un anno con
OPTION (MAXRECURSION n).
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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 ___)