关于Postgres中daterange()函数的工作原理、文档查询及包含式结束日期函数的咨询
关于Postgres中daterange()函数的工作原理、文档查询及包含式结束日期函数的咨询
嗨,我来帮你把这个Postgres里daterange函数的问题理清楚~
首先来说你遇到的空结果问题:你执行的select daterange(current_date, current_date);返回空区间,核心原因是daterange默认采用左闭右开的区间规则——也就是起始日期是被包含的,但结束日期是被排除的。当你把起始和结束都设成同一天时,这个区间里其实没有任何有效的日期,自然就返回空啦。
然后是你提到的文档问题:其实daterange是PostgreSQL内置的范围类型构造函数,它的相关说明都在官方文档的「范围类型」章节里哦。这类构造函数的命名逻辑很统一,比如针对整数的int4range、针对时间戳的tsrange,都是和对应的范围类型同名的构造函数,可能你之前找的方向不对才没找到。
最后说你关心的「有没有能创建包含式结束日期的daterange」——当然有两种常用方法:
- 直接在构造函数里加第三个参数指定边界类型,比如执行
daterange(current_date, current_date, '[]'),这里的[]就表示左右边界都包含,这样就能得到包含当天的有效区间了。 - 另一种思路是把结束日期往后推一天,比如
daterange(current_date, current_date + interval '1 day'),利用左闭右开的规则,这个区间就会完整包含当天的所有日期。
内容来源于stack exchange
相关产品推荐
相关产品推荐

