將匯入資料轉換為含時區的日期
既然我們已經看過三種型別安全的轉換函式,現在可以開始把它們套用在真實資料集上。這個情境中,我們要從 dbo.ImportedTime 資料表剖析資料。我們曾用不同的應用程式將資料載入此表,並在先前的練習中看過。這次,我們要擷取所有列的資料,而不是只取匯入應用程式標記為有效的那些。
本練習屬於課程
SQL Server 的時間序列分析
練習說明
- 在
EventDates共用資料表運算式中,補上缺少的TRY_XXX()函式名稱。 - 將
EventDateOffset的事件日期轉換為'UTC',並將輸出命名為EventDateUTC。 - 使用
AT TIME ZONE將EventDateOffset的事件日期轉換為'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;