Vytvoření časové řady pro jeden rok
Cílem tohoto cvičení je vytvořit řadu dnů pro jeden rok. K tomu budeš potřebovat tyto dvě funkce pro práci s datem a časem:
GETDATE()DATEADD(datepart, number, date)
Funkce GETDATE() vrátí aktuální čas (např. 2019-03-14 20:09:14) a DATEADD(month, 1, GETDATE()) vrátí aktuální datum plus jeden měsíc (např. 2019-04-14 20:09:14).
Pro vytvoření řady dnů v roce potřebuješ 365 rekurzivních kroků.
Počet iterací proto navyš pomocí OPTION (MAXRECURSION n), kde n představuje počet iterací.
Toto cvičení je součástí kurzu
Hierarchical and Recursive Queries in SQL Server
Pokyny k cvičení
- Inicializuj aktuální čas jako
time. - Vyber CTE rekurzivně a spoj kotevní a rekurzivní člen správným příkazem.
- Omez počet iterací na počet dní v roce minus 1.
- Navyš maximální počet iterací na počet dní v roce pomocí
OPTION (MAXRECURSION n).
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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 ___)