Tarih hesaplaması ve artık yıllar
Aranızda R kullananlar olabilir; burada R ve lubridate paketiyle artık yıl tarih hesaplamasının zor olabileceğini not düşelim. lubridate iki tür işlev sunar: duration ve period.
lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, bu yanlış.
lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, bu doğru.
lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, bu doğru.
lubridate::ymd(20120229) - lubridate::years(1) --> NA, bu beklenmedik bir davranış.
SQL Server'ın artık yıllarla nasıl başa çıktığını görmek ve benzer tuhaflıkları olup olmadığını anlamak için DATEADD() ve DATEDIFF() işlevlerini kullanabiliriz.
Bu egzersiz, kursun bir parçasıdır
SQL Server'da Zaman Serisi Analizi
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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;