開始使用免費開始

將匯入資料轉換為含時區的日期

既然我們已經看過三種型別安全的轉換函式,現在可以開始把它們套用在真實資料集上。這個情境中,我們要從 dbo.ImportedTime 資料表剖析資料。我們曾用不同的應用程式將資料載入此表,並在先前的練習中看過。這次,我們要擷取所有列的資料,而不是只取匯入應用程式標記為有效的那些。

本練習屬於課程

SQL Server 的時間序列分析

檢視課程

練習說明

  • EventDates 共用資料表運算式中,補上缺少的 TRY_XXX() 函式名稱。
  • EventDateOffset 的事件日期轉換為 'UTC',並將輸出命名為 EventDateUTC
  • 使用 AT TIME ZONEEventDateOffset 的事件日期轉換為 'US Eastern Standard Time',並將輸出命名為 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;
編輯並執行程式碼