You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL日期区间查询:如何获取2003年6月匹配的记录

查询PostgreSQL中包含指定月份的日期范围记录

看起来你需要筛选出日期范围覆盖2003年6月的记录,正好PostgreSQL的范围类型有专门的操作符可以轻松搞定这个需求!

首先确认下,你的Date列应该是PostgreSQL的daterange类型对吧?针对你的场景,有两种简单有效的查询方式:

方法1:利用范围重叠操作符&&

我们可以先构造出2003年6月的完整日期范围(左闭右开,和你表中的范围格式保持一致),然后判断记录的日期范围是否和这个月的范围有重叠:

SELECT ID, Date
FROM your_table_name -- 记得替换成你的实际表名
WHERE Date && '[2003-06-01,2003-07-01)'::daterange;

方法2:利用范围包含操作符@>

如果只需要确认记录的范围包含2003年6月里的任意一天(比如当月第一天),可以用包含操作符,这样写更简洁:

SELECT ID, Date
FROM your_table_name -- 替换成实际表名
WHERE Date @> '2003-06-01'::date;

这两种方法都会精准返回ID为5和6的记录,因为它们的日期范围[2000-01-01,2017-01-01)完全覆盖2003年6月,而其他记录的范围从2017年才开始,和2003年6月没有任何交集。

另外要注意,PostgreSQL的daterange默认是左闭右开的,所以我们构造的[2003-06-01,2003-07-01)正好代表整个6月的时间区间,和你表中的范围定义规则匹配,这样判断结果不会有偏差。


内容的提问来源于stack exchange,提问作者shahzad ise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:19:39