Créer une série temporelle d'un an
L'objectif de cet exercice est de créer une série de jours pour une année. Pour ce faire, vous devez utiliser les deux fonctions de date/heure suivantes :
GETDATE()DATEADD(datepart, number, date)
Avec GETDATE(), vous obtenez l'heure actuelle (p. ex. 2019-03-14 20:09:14) et avec DATEADD(month, 1, GETDATE()), vous obtenez la date actuelle plus un mois (p. ex. 2019-04-14 20:09:14).
Pour obtenir une série de jours pour une année, vous avez besoin de 365 étapes de récursion.
Par conséquent, augmentez le nombre d'itérations avec OPTION (MAXRECURSION n), où n représente le nombre d'itérations.
Cette activité fait partie du cours
Requêtes hiérarchiques et récursives dans SQL Server
Instructions de l’exercice
- Initialisez l'heure actuelle sous le nom
time. - Sélectionnez la CTE de façon récursive et combinez le point d'ancrage et le membre récursif avec l'instruction appropriée.
- Limitez le nombre d'itérations au nombre de jours dans une année moins 1.
- Augmentez le nombre maximal d'itérations au nombre de jours dans une année avec
OPTION (MAXRECURSION n).
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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 ___)