您好,PostgreSQL专家.
我试图理解为什么这两个布尔表达式返回不同的结果.
第一个返回TRUE,而第二个返回FALSE.
SELECT CAST('2019-01-01T12:00:00' AS TIMESTAMP) - CAST('2018-01-01T13:00:00' AS TIMESTAMP) <= INTERVAL '365 DAYS',
CAST('2019-01-01T12:00:00' AS TIMESTAMP) - CAST('2018-01-01T13:00:00' AS TIMESTAMP) <= INTERVAL '1 YEAR';
2019年和2018年都不是闰年.
我原以为对于非闰年,一年的间隔相当于365天的间隔,但我显然错了.
使用PostgreSQL 15进行了测试.
我们将非常感谢您的帮助!
Edit:个 因此,这看起来更像是一个错误,而不是一个功能. 《IEC/ISO 9075-2:2016 SQL Foundation》定义了两种类型的间隔.一个称为year-month间隔,另一个称为day-time间隔.每一种类型都只能与其自身进行比较.因此,我的谓词应该会因为类型不兼容而引发错误.这将 for each 使用它的人省go 很多令人头痛的问题.如果有PostgreSQL贡献者阅读这篇文章,我认为应该考虑在future 的版本中实现这一点.