在 Azure SQL 数据仓库中转换时区

Convert timezone in Azure SQL Data Warehouse

我有一个来自 US/Pacific 时区的 DATETIME 列,但它不是这样编码的。如何将其转换为 Azure SQL 数据仓库中的 UTC 时区?

AT DATETIME T-SQL 函数似乎最合适,但 Azure SQL 数据仓库不支持它。 https://docs.microsoft.com/en-us/sql/t-sql/queries/at-time-zone-transact-sql

例如,一条记录的 DATETIME 为 2013-04-02 08:02:47.000000。转换后应该是 2013-04-02 15:02:47.000000.

在没有上下文的情况下很难回答,但我相信您可以 cast or convert the column to whatever date/time 输入您想要的内容。由于缺乏上下文,很难再说明时区。

现在(冬天)我们处于太平洋标准时间,即 UTC – 8 小时。因此,将日期 2013-04-02 08:02:47.000000 转换为 UTC 将是 2013-04-02 16:02:47.0000000 value.

声明@mydate datetime2 = '2013-04-02 08:02:47.000000' select dateadd(hh, 8, @mydate) 作为 utcdate

因为我的数据存储在 'US/Pacific' 中,所以我使用 TODATETIMEOFFSET() 将特定偏移量添加到数据中。一旦存储为 DATETIMEOFFSET 类型,服务器会将其视为 UTC 时间,但时区偏移仍然可用。

SELECT TODATETIMEOFFSET(time_in_pt, '-08:00') as time_with_pt_timezone ...

https://docs.microsoft.com/en-us/sql/t-sql/functions/todatetimeoffset-transact-sql