CommencerCommencez gratuitement

Calculs de dates et années bissextiles

Certains d’entre vous ont peut‑être déjà utilisé R ; sachez que les calculs de dates sur des années bissextiles peuvent y être délicats avec le package lubridate. lubridate propose deux types de fonctions : duration et period.

lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, ce qui est incorrect.

lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, ce qui est correct.

lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, ce qui est correct.

lubridate::ymd(20120229) - lubridate::years(1) --> NA, un comportement inattendu.

Nous pouvons utiliser les fonctions DATEADD() et DATEDIFF() pour voir comment SQL Server gère les années bissextiles et vérifier s’il présente les mêmes particularités.

Cet exercice fait partie du cours

<cours>Analyse de séries temporelles dans SQL Server</cours>
Voir le cours

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

DECLARE
	@LeapDay DATETIME2(7) = '2012-02-29 18:00:00';

-- Fill in the date parts and intervals as needed
SELECT
	DATEADD(___, ___, @LeapDay) AS PriorDay,
	DATEADD(___, ___, @LeapDay) AS NextDay,
    -- For leap years, we need to move 4 years, not just 1
	DATEADD(YEAR, ___, @LeapDay) AS PriorLeapYear,
	DATEADD(YEAR, ___, @LeapDay) AS NextLeapYear,
	DATEADD(___, -1, @LeapDay) AS PriorYear;
Modifier et exécuter le code