LoslegenKostenlos starten

Datumarithmetik und Schaltjahre

Einige von euch haben vielleicht Erfahrung mit R. Dabei kann Datumarithmetik rund um Schaltjahre mit R und dem Paket lubridate knifflig sein. lubridate bietet zwei Arten von Funktionen: duration und period.

lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, was falsch ist.

lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, was korrekt ist.

lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, was korrekt ist.

lubridate::ymd(20120229) - lubridate::years(1) --> NA, was ein unerwartetes Verhalten ist.

Wir können die Funktionen DATEADD() und DATEDIFF() nutzen, um zu sehen, wie SQL Server mit Schaltjahren umgeht, und ob es ähnliche Eigenheiten gibt.

Diese Übung ist Teil des Kurses

<Kurs>Zeitreihenanalyse in SQL Server</Kurs>
Kurs ansehen

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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 bearbeiten und ausführen