bigquery:从时间戳中提取秒

2fjabf4q  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(549)

如何运行此查询?
错误消息:参数类型的函数提取没有匹配的签名:date\u time\u part from int64。支持的签名:extract(date\u time\u part from date);从时间戳[时区字符串]中提取(日期时间部分);提取(date\u time\u part from datetime);在[12:12]提取(日期时间部分)
它们都给出相同的错误信息

WHERE EXTRACT( SECOND FROM event_timestamp )
             - EXTRACT( SECOND FROM last_event) >= (60 * 10)
        OR last_event IS NULL
WHERE EXTRACT( SECOND FROM event_timestamp AT TIME ZONE "UTC")
             - EXTRACT( SECOND FROM last_event  AT TIME ZONE "UTC") >= (60 * 10)
        OR last_event IS NULL

v1uwarro

v1uwarro1#

使用 TIMESTAMP_MICROS() ```
WHERE EXTRACT( SECOND FROM TIMESTAMP_MICROS(event_timestamp))
- EXTRACT( SECOND FROM last_event) >= (60 * 10)
OR last_event IS NULL

h7wcgrx3

h7wcgrx32#

如果您希望事件距离上一个时间戳超过10分钟,只需使用一些算术和比较:

where event_timestamp > last_event + (60 * 10 * 1000000) or
      last_event is null

您将时间戳存储为微秒值。您不需要转换为其他类型。
如果你真的想把它变成 timestamp 值,您可以使用:

where timestamp_micros(event_timestamp) > timestamp_add(timestamp_micros(last_event), interval 10 minute) or
      last_event is null

尤其是,您不希望提取秒数。这个值总是在0到59之间。

相关问题