Kom igångKom igång gratis

Datumberäkningar och skottår

Om du har arbetat med R kanske du vet att skottårsberäkningar kan vara knepiga med paketet lubridate. Det finns två typer av funktioner: duration och period.

lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, vilket är fel.

lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, vilket är rätt.

lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, vilket är rätt.

lubridate::ymd(20120229) - lubridate::years(1) --> NA, vilket är oväntat beteende.

Vi kan använda funktionerna DATEADD() och DATEDIFF() för att undersöka hur SQL Server hanterar skottår och om det uppvisar liknande egenheter.

Den här övningen är en del av kursen

Tidsserieanalys i SQL Server

Visa kurs

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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;
Redigera och kör kod