CommencezCommencez gratuitement

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

Voir le cours

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 ___)
Modifier et exécuter le code