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
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 ___)