Perhitungan tanggal dan tahun kabisat
Sebagian dari Anda mungkin pernah menggunakan R, dan di sini kami mencatat bahwa perhitungan tanggal pada tahun kabisat bisa menjadi pelik di R dengan paket lubridate. lubridate memiliki dua jenis fungsi: duration dan period.
lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, yang tidak benar.
lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, yang benar.
lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, yang benar.
lubridate::ymd(20120229) - lubridate::years(1) --> NA, yang merupakan perilaku tidak terduga.
Kita dapat menggunakan fungsi DATEADD() dan DATEDIFF() untuk melihat bagaimana SQL Server menangani tahun kabisat guna mengetahui apakah ada keanehan yang sama.
Latihan ini merupakan bagian dari kursus
Analisis Deret Waktu di SQL Server
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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;