Aan de slagGa gratis aan de slag

Datumrekenen en schrikkeljaren

Sommigen van jullie hebben misschien ervaring met R. Daarbij kan datumrekenen met schrikkeljaren lastig zijn met het pakket lubridate. lubridate heeft twee soorten functies: duration en period.

lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, wat onjuist is.

lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, wat juist is.

lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, wat juist is.

lubridate::ymd(20120229) - lubridate::years(1) --> NA, wat onverwacht gedrag is.

We kunnen de functies DATEADD() en DATEDIFF() gebruiken om te zien hoe SQL Server met schrikkeljaren omgaat en of het dezelfde eigenaardigheden heeft.

Deze oefening maakt deel uit van de cursus

Tijdreeksanalyse in SQL Server

Cursus bekijken

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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;
Code bewerken en uitvoeren