PostgreSQL如何查询当前及未来仍有效的DATERANGE数据
正确查询仍有效日期范围的方法
原查询的问题在于使用=判断日期范围完全相等,这只会匹配与你指定的DATERANGE('2023-01-09','2025-01-09', '[]')完全一致的记录,显然无法满足“当前及未来仍有效”的需求。
你可以通过以下两种方式实现正确查询:
方法一:使用范围包含操作符
利用PostgreSQL的范围包含操作符@>,判断当前日期是否落在validity_dates范围内:
SELECT id FROM validity WHERE validity_dates @> CURRENT_DATE;
方法二:判断范围的上边界
提取validity_dates的上边界,判断其晚于当前日期(适用于需要明确检查有效期结束时间的场景):
SELECT id FROM validity WHERE upper(validity_dates) > CURRENT_DATE;
两种方式都能正确返回id为4和5的记录,因为它们的有效期结束时间均晚于当前日期。
内容的提问来源于stack exchange,提问作者Panface
相关产品推荐
相关产品推荐

