如何根据 bigquery 中的时区列将 UTC 时间转换为本地时区?

Posted

技术标签:

【中文标题】如何根据 bigquery 中的时区列将 UTC 时间转换为本地时区?【英文标题】:How to convert UTC time to local timezones based on timezone column in bigquery? 【发布时间】:2020-03-24 04:06:12 【问题描述】:

我一直在尝试使用 GBQ 中的标准 SQL 将每个 UTC 时间转换回适当的本地时区,但找不到动态执行此操作的好方法,因为我可能在数据库中有大量不同的时区名称。我想知道是否有人有想法?

我的表格包含 2 个不同的列(见截图)

【问题讨论】:

预期的输出是什么? - 请澄清 @MikhailBerlyant 如果有意义的话,我希望有一个名为“local_time”的新专栏。谢谢。 【参考方案1】:

以下示例适用于 BigQuery 标准 SQL

#standardSQL
WITH `project.dataset.yourtable` AS (
  SELECT 'Pacific/Honolulu' timezone, TIMESTAMP '2020-03-01 03:41:27 UTC' UTC_timestamp UNION ALL
  SELECT 'America/Los_Angeles',  '2020-03-01 03:41:27 UTC'
)
SELECT *, 
  DATETIME(UTC_timestamp, timezone) AS local_time
FROM `project.dataset.yourtable`

有输出

Row timezone            UTC_timestamp           local_time   
1   Pacific/Honolulu    2020-03-01 03:41:27 UTC 2020-02-29T17:41:27  
2   America/Los_Angeles 2020-03-01 03:41:27 UTC 2020-02-29T19:41:27  

【讨论】:

以上是关于如何根据 bigquery 中的时区列将 UTC 时间转换为本地时区?的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 中的优雅时区转换

BigQuery 在解析时无法识别时区

BigQuery 自动将时间戳时区转换为 UTC

将时间戳转换为特定时区然后在 bigquery 中将其转换为日期时出现问题

谷歌数据洞察日期问题

有没有一种简单的方法可以根据 BigQuery 中的时区差异生成 table_query?