Tính toán ngày và năm nhuận
Một số bạn có thể đã dùng R, và ở đây chúng ta lưu ý rằng việc tính toán ngày với năm nhuận trong R cùng gói lubridate có thể rắc rối. lubridate có hai nhóm hàm: duration (khoảng thời lượng) và period (khoảng thời kỳ).
lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, kết quả này sai.
lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, kết quả này đúng.
lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, kết quả này đúng.
lubridate::ymd(20120229) - lubridate::years(1) --> NA, đây là hành vi ngoài dự đoán.
Chúng ta có thể dùng các hàm DATEADD() và DATEDIFF() để xem SQL Server xử lý năm nhuận như thế nào và liệu nó có các “tính khí thất thường” tương tự hay không.
Bài tập này là một phần của khóa học
Phân tích chuỗi thời gian trong SQL Server
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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;