函数 TIMESTAMP_DIFF 没有匹配的签名...... BigQuery 上的错误

Posted

技术标签:

【中文标题】函数 TIMESTAMP_DIFF 没有匹配的签名...... BigQuery 上的错误【英文标题】:No matching signature for function TIMESTAMP_DIFF.... error on BigQuery 【发布时间】:2019-11-22 01:07:02 【问题描述】:

我正在尝试获取表中两个日期字段之间的时间戳差异。我知道这两个日期都是 TIMESTAMP 格式,但是当我尝试使用 TIMESTAMP_DIFF 函数时,我收到一条错误消息:“参数类型的函数 TIMESTAMP_DIFF 没有匹配签名:STRING、STRING、DATE_TIME_PART。支持的签名:TIMESTAMP_DIFF(TIMESTAMP, TIMESTAMP, DATE_TIME_PART) [27:8]"

我还尝试在查询中再次格式化它们(如 FIRST_VALUE(): https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#datetime_diff 的示例中所做的那样,然后它显示了相同的错误,但 FORMAT_TIMESTAMP 。

有什么想法可以解决此问题或获取每行两个字段之间的时间差吗?

【问题讨论】:

【参考方案1】:

在下面使用(BigQuery 标准 SQL)

#standardSQL
SELECT TIMESTAMP_DIFF(PARSE_TIMESTAMP('%Y-%m-%d %H:%M:%S', prev_time), PARSE_TIMESTAMP('%Y-%m-%d %H:%M:%S', event_datetime), MINUTE)
FROM `project.dataset.messages`

【讨论】:

很高兴它对你有用。考虑投票给答案 - 这在 SO 上同样重要

以上是关于函数 TIMESTAMP_DIFF 没有匹配的签名...... BigQuery 上的错误的主要内容,如果未能解决你的问题,请参考以下文章

C++ 指向具有匹配函数签名的任何类的成员函数的指针

如何检查检查PInvoke签名的调用约定和参数与非托管的目标签名是不是匹配?

函数调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。

Apache Drill UDF:未找到函数签名的匹配项

创建函数变体向量时出现“调用没有匹配函数”错误

找不到具有匹配签名的构造函数“Stateflow.State”。错误 Matlab