我已将带有东部时间戳记的数据加载到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
问题:是否有一种优雅的文档方式可以解决此问题?
答案 0 :(得分:4)
您可以转换为DATETIME
以将时间戳视为逻辑日期/时间,然后使用TIMESTAMP
转换回US/Eastern
:
SELECT TIMESTAMP(DATETIME(placed_eastern), 'US/Eastern')) AS actual_placed_utc
FROM dataset.table