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

แปลงข้อมูลที่นำเข้าให้เป็นวันที่พร้อม time zone

หลังจากที่ได้ทำความรู้จักกับฟังก์ชันการแปลงแบบ type-safe ทั้งสามตัวแล้ว ถึงเวลานำไปใช้กับชุดข้อมูลจริง ในแบบฝึกหัดนี้ จะทำการ parse ข้อมูลจากตาราง dbo.ImportedTime ซึ่งเป็นตารางที่โหลดข้อมูลมาจากแอปพลิเคชันอื่นและเคยดูไปแล้วในแบบฝึกหัดก่อนหน้า คราวนี้จะดึงข้อมูลทุกแถว ไม่ใช่เฉพาะแถวที่แอปพลิเคชันระบุว่าถูกต้องเท่านั้น

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

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

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เติมชื่อฟังก์ชัน TRY_XXX() ที่หายไปใน common table expression ชื่อ EventDates
  • แปลงวันที่ EventDateOffset ให้เป็น 'UTC' แล้วตั้งชื่อผลลัพธ์ว่า EventDateUTC
  • แปลงวันที่ EventDateOffset ให้เป็น 'US Eastern Standard Time' โดยใช้ AT TIME ZONE แล้วตั้งชื่อผลลัพธ์ว่า EventDateUSEast

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

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

WITH EventDates AS
(
    SELECT
        -- Fill in the missing try-conversion function
        ___(DATETIME2(3), it.EventDate) AT TIME ZONE it.TimeZone AS EventDateOffset,
        it.TimeZone
    FROM dbo.ImportedTime it
        INNER JOIN sys.time_zone_info tzi
			ON it.TimeZone = tzi.name
)
SELECT
    -- Fill in the approppriate event date to convert
	CONVERT(NVARCHAR(50), ed.EventDateOffset) AS EventDateOffsetString,
	CONVERT(DATETIME2(0), ed.EventDateOffset) AS EventDateLocal,
	ed.TimeZone,
    -- Convert from a DATETIMEOFFSET to DATETIME at UTC
	CAST(ed.EventDateOffset AT TIME ZONE '___' AS DATETIME2(0)) AS EventDateUTC,
    -- Convert from a DATETIMEOFFSET to DATETIME with time zone
	CAST(ed.EventDateOffset ___ ___ ___ 'US Eastern Standard Time'  AS DATETIME2(0)) AS EventDateUSEast
FROM EventDates ed;
แก้ไขและรันโค้ด