从时间戳中提取的 Bigquery 失败
Posted
技术标签:
【中文标题】从时间戳中提取的 Bigquery 失败【英文标题】:Bigquery extract from timestamp failing 【发布时间】:2019-07-27 12:24:26 【问题描述】:运行以下查询时:
SELECT EXTRACT(HOUR FROM TIMESTAMP '2018-07-09T02:40:23.652Z' AT TIME ZONE 'US/Eastern')
它返回预期结果:22
但是在运行时:
SELECT start_ts, EXTRACT(HOUR FROM TIMESTAMP TIMESTAMP_MICROS(CAST(1000000 * start_ts AS INT64)) AT TIME ZONE 'US/Eastern') as calc
from SOME_CALCS
抛出错误:
语法错误:应为“)”或关键字 AT,但获得了标识符 [1:46] 上的“TIMESTAMP_MICROS”
我所做的只是用 TIMESTAMP_MICROS 替换字符串。
【问题讨论】:
根本不起作用 【参考方案1】:您的代码中不需要关键字timestamp
select
extract(
hour from
timestamp_micros(
cast(1563456789.012345 * 1000000 as int64)
) at time zone 'US/Eastern')
timestamp_micros
已经为您返回时间戳对象:
timestamp_micros
【讨论】:
【参考方案2】:您应该将(假设您的 start_ts 格式为:1563026408.17193)用于 BigQuery 标准 SQL
SELECT start_ts,
EXTRACT(HOUR FROM DATETIME(TIMESTAMP_MICROS(CAST(1000000 * start_ts AS INT64)), 'US/Eastern')) as calc
FROM SOME_CALCS
【讨论】:
以上是关于从时间戳中提取的 Bigquery 失败的主要内容,如果未能解决你的问题,请参考以下文章