สร้างวันที่และเวลาพร้อม offset จากส่วนประกอบย่อย
ฟังก์ชัน DATETIMEOFFSETFROMPARTS() ใช้สร้างค่า DATETIMEOFFSET จากส่วนประกอบย่อย โดยรับพารามิเตอร์มากที่สุดในบรรดาฟังก์ชันสร้างวันที่และเวลาทั้งหมด
ในวันที่ 19 มกราคม 2038 เวลา 03:14:08 UTC เราจะเผชิญกับปัญหา Year 2038 (หรือ Y2.038K) ซึ่งเป็นช่วงเวลาที่อุปกรณ์ 32 บิตจะรีเซ็ตกลับไปยังวันที่ 1900-01-01 ปัญหานี้มีความเสี่ยงที่จะทำให้อุปกรณ์ 32 บิตทุกตัวที่ใช้ POSIX time หยุดทำงาน ซึ่ง POSIX time คือจำนวนวินาทีที่นับตั้งแต่วันที่ 1 มกราคม 1970 เวลาเที่ยงคืน UTC
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์อนุกรมเวลาใน SQL Server
คำแนะนำการฝึกหัด
- สร้างค่า
DATETIMEOFFSETที่แทนมิลลิวินาทีสุดท้ายก่อนที่ปัญหา Y2.038K จะเกิดขึ้น โดยให้ offset เป็น UTC - สร้างค่า
DATETIMEOFFSETที่แทนช่วงเวลาที่อุปกรณ์ประสบปัญหา Y2.038K ตามเวลา UTC จากนั้นใช้ตัวดำเนินการAT TIME ZONEเพื่อแปลงเป็นEastern Standard Time
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
-- Fill in the millisecond PRIOR TO chaos
DATETIMEOFFSETFROMPARTS(2038, ___, ___, ___, ___, 07, 999, 0, 0, 3) AS LastMoment,
-- Fill in the date and time when we will experience the Y2.038K problem
-- Then convert to the Eastern Standard Time time zone
DATETIMEOFFSETFROMPARTS(2038, ___, ___, ___, ___, 08, 0, 0, 0, 3) AT TIME ZONE '___ ___ ___' AS TimeForChaos;