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>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;