Calcoli con le date e anni bisestili
Alcuni di voi potrebbero avere esperienza con R e qui segnaliamo che i calcoli sulle date negli anni bisestili possono essere insidiosi in R con il pacchetto lubridate. lubridate ha due tipi di funzioni: duration e period.
lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, che è sbagliato.
lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, che è corretto.
lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, che è corretto.
lubridate::ymd(20120229) - lubridate::years(1) --> NA, che è un comportamento inatteso.
Possiamo usare le funzioni DATEADD() e DATEDIFF() per vedere come SQL Server gestisce gli anni bisestili e verificare se presenta le stesse eccentricità.
Questo esercizio fa parte del corso
Analisi delle serie temporali in SQL Server
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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;