Aritmetică cu date și ani bisecți
Unii dintre voi poate aveți experiență cu R și este important de știut că aritmetica cu date în anii bisecți poate fi dificilă atunci când folosești pachetul lubridate. Acesta are două tipuri de funcții: duration și period.
lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, ceea ce este incorect.
lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, ceea ce este corect.
lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, ceea ce este corect.
lubridate::ymd(20120229) - lubridate::years(1) --> NA, un comportament neașteptat.
Podem folosi funcțiile DATEADD() și DATEDIFF() pentru a vedea cum gestionează SQL Server anii bisecți și dacă prezintă comportamente similare.
Acest exercițiu face parte din cursul
Analiza seriilor de timp în SQL Server
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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;