Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在bigquery中获取两个时间戳之间的时间差_Sql_Google Bigquery_Timestamp - Fatal编程技术网

Sql 如何在bigquery中获取两个时间戳之间的时间差

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

我想得到大查询中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,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)