Zacznij terazZacznij za darmo

Arytmetyka dat i lata przestępne

Jeśli masz doświadczenie z językiem R, warto wiedzieć, że arytmetyka dat w latach przestępnych potrafi być tam kłopotliwa – szczególnie z pakietem lubridate. Pakiet ten oferuje dwa typy funkcji: duration (czas trwania) i period (okres).

lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01 – wynik nieprawidłowy.

lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01 – wynik prawidłowy.

lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29 – wynik prawidłowy.

lubridate::ymd(20120229) - lubridate::years(1) --> NA – zachowanie nieoczekiwane.

Skorzystamy z funkcji DATEADD() i DATEDIFF(), żeby sprawdzić, jak SQL Server radzi sobie z latami przestępnymi i czy wykazuje podobne osobliwości.

To ćwiczenie jest częścią kursu

Analiza szeregów czasowych w SQL Server

Zobacz kurs

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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;
Edytuj i uruchom kod