タイムゾーン付きの日付にインポートデータを変換する
これで型安全な3つの変換関数を確認できたので、実データセットに適用していきます。この演習では、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;