运算符不存在:带有时区的 tstzrange && 时间戳

Posted

技术标签:

【中文标题】运算符不存在:带有时区的 tstzrange && 时间戳【英文标题】:Operator does not exist: tstzrange && timestamp with time zone 【发布时间】:2019-07-09 11:35:11 【问题描述】:

跑步:

SELECT tstzrange( '2019-05-01', '2019-05-09' ) && '2019-05-01'::timestamptz

我收到错误消息:

SQL Error [42883]: ERROR: operator does not exist: tstzrange && timestamp with time zone
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.

为什么没有范围与点重叠? 这个操作看起来很合理

【问题讨论】:

【参考方案1】:

为什么没有范围与点重叠?

因为这不是“重叠”的定义方式。如果要测试单个时间戳值是否在某个范围内,则需要使用包含运算符@>

SELECT tstzrange( '2019-05-01', '2019-05-09' ) @> '2019-05-01'::timestamptz

【讨论】:

目前实现为next,但是为什么“重叠”没有定义与点的交集?可能是邮件列表讨论 @EugenKonkov:嗯,标准的overlaps操作符也是这样定义的。

以上是关于运算符不存在:带有时区的 tstzrange && 时间戳的主要内容,如果未能解决你的问题,请参考以下文章

运算符不存在:没有时区的时间戳 ~~* 未知的 ruby​​ 代码

PostgreSQL:42883 运算符不存在:没有时区的时间戳 = 文本

错误:运算符不存在:没有时区的时间戳>整数)

使用 && 加入 TSTZRANGE 时,Postgresql 9.4 查询变得越来越慢

带有时区的时间戳,使用 django ORM 未知

PostgreSQL在没有时区的时间戳类型的表中搜索