在 Synapse 中将时间戳从字符串转换为 EST 时间

Posted

技术标签:

【中文标题】在 Synapse 中将时间戳从字符串转换为 EST 时间【英文标题】:Convert timestamp from string to EST time in Synapse 【发布时间】:2022-01-11 10:48:23 【问题描述】:

我是 Synapse 数据仓库的新手。

目前,我有一个名为 last_update_utc 作为字符串数据类型的时间戳列,它是 UTC 时间。我需要添加一个带有时间戳的新列 last_update_est 作为 datetime2 数据类型从 last_update_utc 列转换 - 转换还需要考虑 DST。您可以查看下面的示例输出:

id | last_update_utc (string)     | last_update_est (datetime2)
1  | 2020-02-28T17:26:47.483698Z  | 2020-02-28T12:26:47.483698Z
2  | 2021-09-03T22:59:19.093Z     | 2021-09-03T18:59:19.093Z

第一行,不加夏令时差5小时,加夏令时差4小时。表名为hub.test,最初有 id 和 last_update_utc 列。

Synapse DW中是否有简单的函数或方法可以实现上述任务?

谢谢

【问题讨论】:

【参考方案1】:

将字符串转换为 datetime2 并应用 AT TIME ZONE 将 UTC 转换为所需的时区。

SELECT CONVERT(DATETIME2, '2021-09-03T22:59:19.093Z') AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'as last_update_est

请参阅this document 了解更多关于 AT TIME ZONE 实施的信息。

【讨论】:

以上是关于在 Synapse 中将时间戳从字符串转换为 EST 时间的主要内容,如果未能解决你的问题,请参考以下文章