@> 运算符输出不是预期的结果?

@> operator output not expected result?

我目前正在尝试理解为什么 @> 在我评估此查询时给出 false

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

中的运算符

它应该回答是否

Does the first range contain the second?

在那种情况下我会说是?

修改下限好像可以,但为什么要修改呢? 它应该仍然包含第二个?还是我遗漏了什么

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

如果你像下面这样比较它会 return true

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