เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การคำนวณวันที่และปีอธิกสุรทิน

หากคุ้นเคยกับ R อาจเคยพบว่าการคำนวณวันที่ในปีอธิกสุรทินด้วยแพ็กเกจ lubridate นั้นอาจให้ผลลัพธ์ที่ไม่คาดคิด เนื่องจาก lubridate มีฟังก์ชันสองประเภท ได้แก่ duration และ period

lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01 ซึ่งไม่ถูกต้อง

lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01 ซึ่งถูกต้อง

lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29 ซึ่งถูกต้อง

lubridate::ymd(20120229) - lubridate::years(1) --> NA ซึ่งเป็นพฤติกรรมที่ไม่คาดคิด

เราสามารถใช้ฟังก์ชัน DATEADD() และ DATEDIFF() เพื่อตรวจสอบว่า SQL Server จัดการกับปีอธิกสุรทินอย่างไร และดูว่ามีความผิดปกติในลักษณะเดียวกันหรือไม่

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์อนุกรมเวลาใน SQL Server

ดูคอร์ส

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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;
แก้ไขและรันโค้ด