我目前正试图理解为什么@>
在评估此查询时给我错误
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')