Crie uma série temporal de um ano
O objetivo deste exercício é criar uma série de dias para um ano. Para isso, você deve usar as duas funções de data/hora abaixo:
GETDATE()DATEADD(datepart, number, date)
Com GETDATE() você obtém a hora atual (por exemplo, 2019-03-14 20:09:14) e, com DATEADD(month, 1, GETDATE()), você obtém a data atual mais um mês (por exemplo, 2019-04-14 20:09:14).
Para obter uma série de dias para um ano, você precisa de 365 passos de recursão.
Portanto, aumente o número de iterações usando OPTION (MAXRECURSION n), em que n representa o número de iterações.
Este exercício faz parte do curso
Consultas Hierárquicas e Recursivas no SQL Server
Instruções do exercício
- Inicialize a hora atual como
time. - Selecione a CTE recursivamente e combine o membro âncora e o membro recursivo com a instrução correta.
- Limite o número de iterações aos dias de um ano menos 1.
- Aumente o número máximo de iterações para o número de dias de um ano com
OPTION (MAXRECURSION n).
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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 ___)