bigquery 使用时区转换字符串日期时间
Posted
技术标签:
【中文标题】bigquery 使用时区转换字符串日期时间【英文标题】:bigquery converting the string datetime with timezone 【发布时间】: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
我需要不同时区的数据。有什么线索吗?
【问题讨论】:
【参考方案1】:尝试使用
DATETIME(CAST( MURDER_DATE AS TIMESTAMP), "Australia/Sydney"))
【讨论】:
【参考方案2】:在我看来,这似乎是 BigQuery 的当前限制:
Timestamp 类型始终以 UTC 格式存储。而且您无法向其中添加任何“时区”信息。 日期时间 类型也不存储有关时区的任何信息。您仍然可以在您的团队/公司中有一个内部约定,即所有 Datetime 列都存储在您当地的时区中,但我个人觉得这很尴尬。到目前为止,我们公司已决定以时间戳(因此为 UTC 格式)存储所有内容,并且由于时区缺乏精确性,我们从不使用 Datetime。然后,如果客户端想要获取另一个时区的信息,它必须在读取数据时自己进行转换。
【讨论】:
以上是关于bigquery 使用时区转换字符串日期时间的主要内容,如果未能解决你的问题,请参考以下文章
将时间戳转换为特定时区然后在 bigquery 中将其转换为日期时出现问题
将 ISO 8601 日期时间字符串转换为 **Date** 对象时,如何将日期时间重新定位到当前时区?
iOS Swift:当字符串包含时区缩写时,如何将特定的日期字符串格式转换为日期对象?