Kom igångKom igång gratis

Skapa en tidsserie för ett år

Målet med den här övningen är att skapa en serie dagar för ett helt år. För denna uppgift behöver du använda följande två tids- och datumfunktioner:

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

Med GETDATE() hämtar du aktuell tid (t.ex. 2019-03-14 20:09:14) och med DATEADD(month, 1, GETDATE()) får du aktuellt datum plus en månad (t.ex. 2019-04-14 20:09:14).

För att få en serie dagar för ett år behöver du 365 rekursionssteg. Öka därför antalet iterationer med OPTION (MAXRECURSION n) där n anger antalet iterationer.

Den här övningen är en del av kursen

Hierarkiska och rekursiva frågor i SQL Server

Visa kurs

Övningsinstruktioner

  • Initiera aktuell tid som time.
  • Välj CTE:n rekursivt och kombinera ankare- och rekursiv medlem med rätt sats.
  • Begränsa antalet iterationer till antalet dagar i ett år minus 1.
  • Öka det maximala antalet iterationer till antalet dagar i ett år med OPTION (MAXRECURSION n).

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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 ___)
Redigera och kör kod