Aan de slagBegin gratis

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

Bekijk cursus

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan 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