【问题标题】:bigquery converting the string datetime with timezonebigquery 使用时区转换字符串日期时间
【发布时间】:2018-03-20 05:54:06
【问题描述】:

bigquery 中包含 TB 数据的表将多个列设置为字符串格式,但实际上它们包含日期时间字符串,例如

2016-10-24 15:00:00

我尝试了this link 的回答,将字段转换(CAST)为时间戳格式,如下所示

SELECT
   CAST( MURDER_DATE AS TIMESTAMP) AS CONVERTED_MURDER_DATE, *
FROM `death_list`;

这可行,但它将所有字符串转换为具有 UTC 时区的时间戳,如下所示

2007-03-23 15:00:00.000 UTC

我需要不同时区的数据。有什么线索吗?

【问题讨论】:

    标签: sql google-cloud-platform google-bigquery


    【解决方案1】:

    尝试使用

    DATETIME(CAST( MURDER_DATE AS TIMESTAMP), "Australia/Sydney"))
    

    【讨论】:

      【解决方案2】:

      在我看来,这似乎是 BigQuery 的当前限制:

      • Timestamp 类型始终以 UTC 格式存储。而且您无法向其中添加任何“时区”信息。
      • 日期时间 类型也不存储有关时区的任何信息。您仍然可以在您的团队/公司中有一个内部约定,即所有 Datetime 列都存储在您当地的时区中,但我个人觉得这很尴尬。

      到目前为止,我们公司已决定以时间戳(因此为 UTC 格式)存储所有内容,并且由于时区缺乏精确性,我们从不使用 Datetime。然后,如果客户端想要获取另一个时区的信息,它必须在读取数据时自己进行转换。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-17
        • 1970-01-01
        • 2017-07-29
        • 1970-01-01
        • 2018-12-20
        • 1970-01-01
        • 2011-05-11
        • 2015-09-17
        相关资源
        最近更新 更多