BigQuery 中的优雅时区转换
Posted
技术标签:
【中文标题】BigQuery 中的优雅时区转换【英文标题】:Elegant timezone conversion in BigQuery 【发布时间】:2018-10-22 15:51:46 【问题描述】:我已将具有东部时间戳的数据加载到 BigQuery 中,这些时间戳存储为来自源数据的原始时间戳:
placed_eastern
-------------------
2018-07-23 00:00:03
BigQuery 默认假定原始时间戳应存储为 UTC:
2018-07-23 00:00:03 UTC
问题:我需要修正这个时区假设。
我目前有一个丑陋的黑客来修复此错误,以确保正确存储时间戳。这会将时间戳的日期和时间部分提取为字符串,将它们连接起来,然后重新创建时间戳。
select
placed_eastern,
timestamp(
concat(
cast(extract(date from placed_eastern) as string),
' ',
cast(extract(time from placed_eastern) as string)
),
'US/Eastern'
) as actual_placed_utc
问题:是否有一种优雅的记录方式来处理这个问题?
【问题讨论】:
【参考方案1】:您可以转换为DATETIME
以将时间戳视为逻辑日期/时间,然后使用US/Eastern
转换回TIMESTAMP
:
SELECT TIMESTAMP(DATETIME(placed_eastern), 'US/Eastern')) AS actual_placed_utc
FROM dataset.table
【讨论】:
以上是关于BigQuery 中的优雅时区转换的主要内容,如果未能解决你的问题,请参考以下文章
将时间戳转换为特定时区然后在 bigquery 中将其转换为日期时出现问题
列类型 TIMESTAMP 的 BigQuery 导入转换日期时间偏移量/时区,但列类型 DATETIME 失败并显示“无效的日期时间字符串”