Inizia subitoInizia gratis

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

Visualizza corso

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;
Modifica ed esegui il codice