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 cela, vous devez utiliser les deux fonctions de date/heure suivantes :
GETDATE()DATEADD(datepart, number, date)
Avec GETDATE(), vous obtenez l’heure actuelle (par ex. 2019-03-14 20:09:14) et avec DATEADD(month, 1, GETDATE()), vous obtenez la date actuelle plus un mois (par ex. 2019-04-14 20:09:14).
Pour obtenir une série de jours sur 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.
Cet exercice fait partie du cours
<cours>Requêtes hiérarchiques et récursives dans SQL Server</cours>Instructions de l’exercice
- Initialisez l’heure actuelle sous le nom
time. - Sélectionnez la CTE de manière récursive et combinez l’ancre 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 ___)