Inizia subitoInizia gratis

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

Visualizza corso

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 ___)
Modifica ed esegui il codice