开始使用免费开始使用

将导入的数据转换为带时区的日期

既然已经了解了三种类型安全的转换函数,接下来就把它们应用到真实数据集上。在本练习中,您将从 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;
编辑并运行代码