从时间戳中提取的 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 失败的主要内容,如果未能解决你的问题,请参考以下文章

SQL 从时间戳中提取小时

从时间戳中提取时间?

从 SQL 中的时间戳中提取时间

从 MYSQL 上的时间戳中提取日/月/年

pandas:从时间戳中提取日期和时间

pandas:从时间戳中提取日期和时间