PostgreSQL中查询排除周末的日期范围数据
解决方案:PostgreSQL查询排除周末日期的行
要实现「仅当指定日期不是周末时,返回包含该日期的行」,只需在原有查询的WHERE条件中添加判断指定日期非周末的逻辑即可。
完整SQL语句
SELECT * FROM your_table_name -- 替换为你的实际表名 WHERE '2023-02-11'::date <@ date_slot AND extract(isodow FROM '2023-02-11'::date) NOT IN (6, 7);
逻辑说明
extract(isodow FROM date)是PostgreSQL中不受本地化影响的星期判断函数:- 返回值1对应周一,2对应周二……6对应周六,7对应周日
- 添加
NOT IN (6,7)后,当指定日期是周六或周日时,整个WHERE条件不成立,不会返回任何结果;只有当指定日期为工作日时,才会执行原有日期范围匹配逻辑。
验证示例
对于测试日期2023-02-11(周六),extract(isodow FROM '2023-02-11'::date)返回6,第二个条件不满足,查询不会返回任何行,符合预期。若替换为工作日日期(比如2023-02-10,周五),则会正常返回包含该日期的行。
内容的提问来源于stack exchange,提问作者simo9900
相关产品推荐
相关产品推荐

