Sql 如何在bigquery中获取两个时间戳之间的时间差
我想得到大查询中event_timestamp和event_prrevous_timestamp之间的时间差 我在用这个Sql 如何在bigquery中获取两个时间戳之间的时间差,sql,google-bigquery,timestamp,Sql,Google Bigquery,Timestamp,我想得到大查询中event_timestamp和event_prrevous_timestamp之间的时间差 我在用这个 SELECT event_name, TIMESTAMP_DIFF(event_timestamp, event_previous_timestamp, day) 但它给出的错误是:对于参数类型:INT64、INT64、DATE\u TIME\u PART,函数TIMESTAMP\u DIFF没有匹配的签名。支持的签名:TIMESTAMP_DIFF(TIMESTAMP,TI
SELECT event_name, TIMESTAMP_DIFF(event_timestamp, event_previous_timestamp, day)
但它给出的错误是:对于参数类型:INT64、INT64、DATE\u TIME\u PART,函数TIMESTAMP\u DIFF没有匹配的签名。支持的签名:TIMESTAMP_DIFF(TIMESTAMP,TIMESTAMP,DATE_TIME_PART);[1:20]处的时间戳(日期时间、日期时间、日期时间部分)
您将使用:
最后一个参数是你想要的差的单位
编辑:
如果时间戳为微秒,只需使用算术:
(event_timestamp - event_previous_timestamp) / (60 * 1000 * 1000) as minutes_between
错误表明
event\u timestamp
和event\u previous\u timestamp
的数据类型是int64
,而不是timestamp
。请尝试使用PARSE_TIMESTAMP(),如下所示:
SELECT event_name, TIMESTAMP_DIFF(PARSE_TIMESTAMP('%Y-%m-%d %H:%M:%S', event_timestamp), PARSE_TIMESTAMP('%Y-%m-%d %H:%M:%S', event_previous_timestamp), day)
谢谢@Gordon Linoff,我已经试过了,但它给出的错误是:参数类型为INT64、INT64、DATE\u TIME\u PART的函数TIMESTAMP\u DIFF没有匹配的签名。支持的签名:TIMESTAMP_DIFF(TIMESTAMP,TIMESTAMP,DATE_TIME_PART);时间戳_DIFF(日期时间,日期时间,日期时间部分)在[1:20]@dixithnani。然后你没有两个时间戳,你的问题也不是你真正想问的。是的,它奏效了。我使用了timestamp_diff(timestamp_MICROS(event_timestamp),timestamp_MICROS(event_previous_timestamp),minute)。谢谢您event_timestamp和event_previous_timestamp列的数据类型是什么?请提供示例数据和所需结果。是的,我知道了。我使用了timestamp_diff(timestamp_MICROS(event_timestamp),timestamp_MICROS(event_previous_timestamp),minute)。谢谢,太好了。不客气。最美好的祝福。
SELECT event_name, TIMESTAMP_DIFF(PARSE_TIMESTAMP('%Y-%m-%d %H:%M:%S', event_timestamp), PARSE_TIMESTAMP('%Y-%m-%d %H:%M:%S', event_previous_timestamp), day)