【问题标题】:Convert timezone in Azure SQL Data Warehouse在 Azure SQL 数据仓库中转换时区
【发布时间】:2018-05-04 07:53:06
【问题描述】:

我有一个来自 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

【问题讨论】:

    标签: sql azure azure-sqldw sql-data-warehouse


    【解决方案1】:

    在没有上下文的情况下很难回答,但我相信您可以将 cast or convert 列添加到您想要的任何 date/time 类型。由于缺乏上下文,很难说时区的原因。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        因为我的数据存储在“美国/太平洋”中,所以我使用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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-30
          • 1970-01-01
          • 2016-10-26
          • 1970-01-01
          • 2016-02-06
          • 1970-01-01
          • 2018-08-10
          • 1970-01-01
          相关资源
          最近更新 更多