ComenzarEmpieza gratis

Crea una serie temporal de un año

El objetivo de este ejercicio es crear una serie de días para un año. Para esta tarea tienes que usar las siguientes dos funciones de fecha/hora:

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

Con GETDATE() obtienes la hora actual (p. ej., 2019-03-14 20:09:14) y con DATEADD(month, 1, GETDATE()) obtienes la fecha actual más un mes (p. ej., 2019-04-14 20:09:14).

Para obtener una serie de días de un año necesitas 365 pasos de recursión. Por lo tanto, aumenta el número de iteraciones con OPTION (MAXRECURSION n), donde n representa el número de iteraciones.

Este ejercicio forma parte del curso

Consultas jerárquicas y recursivas en SQL Server

Ver curso

Instrucciones del ejercicio

  • Inicializa la hora actual como time.
  • Selecciona la CTE de forma recursiva y combina el ancla y el miembro recursivo con la sentencia correcta.
  • Limita el número de iteraciones a los días de un año menos 1.
  • Aumenta el número máximo de iteraciones al número de días de un año con OPTION (MAXRECURSION n).

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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 ___)
Editar y ejecutar código