@>操作员输出没有预期结果?



我目前正试图理解为什么@>在评估此查询时给我错误

select tsrange('1990-01-01 01:00:00','infinity') @> tsrange('1990-01-01 00:00:00','2001-10-01 00:00:00')

https://dbfiddle.uk/?rdbms=postgres_12&fiddle=f2e5b7e2b24ea8c0bda74f7cdae1c3d4

据我所知,运营商https://www.postgresql.org/docs/current/functions-range.html

它应该回答

第一个范围包含第二个吗?

在哪种情况下,我的意思是"是"?

当我改变下限时,它似乎起作用,但我为什么要改变它?它应该还包含第二个?或者我遗漏了什么

结果正确,必须是false。范围右操作数从1990-01-01 00:00:00开始,但左操作数从左操作数后一小时的1990-01-01 01:00:00开始。这就是它返回false的原因。with@>运算符,右操作数的范围必须在左操作数的区域中。(包括两个边界(

如果你像下面这样比较,它将返回true

select tsrange('1990-01-01 00:00:00','infinity') @> tsrange('1990-01-01 00:00:00','2001-10-01 00:00:00')

相关内容

  • 没有找到相关文章

最新更新