ÎncepețiÎncepe gratuit

Creează o serie temporală pentru un an

Scopul acestui exercițiu este să creezi o serie de zile pentru un an întreg. Pentru această sarcină trebuie să folosești următoarele două funcții de timp/dată:

  • GETDATE()
  • DATEADD(datepart, number, date)

Cu GETDATE() obții ora curentă (de exemplu, 2019-03-14 20:09:14), iar cu DATEADD(month, 1, GETDATE()) obții data curentă plus o lună (de exemplu, 2019-04-14 20:09:14).

Pentru a obține o serie de zile pentru un an, ai nevoie de 365 de pași de recursivitate. Așadar, crește numărul de iterații folosind OPTION (MAXRECURSION n), unde n reprezintă numărul de iterații.

Acest exercițiu face parte din cursul

Interogări ierarhice și recursive în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Inițializează ora curentă ca time.
  • Selectează CTE-ul în mod recursiv și combină membrul ancoră cu membrul recursiv folosind instrucțiunea corectă.
  • Limitează numărul de iterații la numărul de zile dintr-un an minus 1.
  • Crește numărul maxim de iterații la numărul de zile dintr-un an folosind OPTION (MAXRECURSION n).

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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 ___)
Editează și rulează codul