【问题标题】:Bigquery extract from timestamp failing从时间戳中提取的 Bigquery 失败
【发布时间】: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 替换字符串。

【问题讨论】:

  • 根本不起作用

标签: google-bigquery


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 2016-08-10
      • 2017-04-08
      • 1970-01-01
      • 2018-07-18
      相关资源
      最近更新 更多