关于sql:bigquery将字符串datetime与时区转换

bigquery converting the string datetime with timezone

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

2016-10-24 15:00:00

我尝试通过此链接回答将字段转换(CAST)为时间戳格式,如下所示

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

可以,但是它将所有字符串转换为带有UTC时区的时间戳,如下所示

1
2007-03-23 15:00:00.000 UTC

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


尝试使用

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


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

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

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