BigQuery中的优雅时区转换

时间:2018-10-22 15:51:47

标签: google-bigquery

我已将带有东部时间戳记的数据加载到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 个答案:

答案 0 :(得分:4)

您可以转换为DATETIME以将时间戳视为逻辑日期/时间,然后使用TIMESTAMP转换回US/Eastern

SELECT TIMESTAMP(DATETIME(placed_eastern), 'US/Eastern')) AS actual_placed_utc
FROM dataset.table