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
Zeitreihenanalyse in SQL Server
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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;