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

PostgreSQL如何从基于当前日期生成的近1年日期序列中排除周末数据

日期过滤SQL修改方案

你可以在原有查询基础上增加星期判断的WHERE条件来过滤周末,修改后的完整语句如下:

SELECT to_char(date_trunc('day', (current_date - days)), 'YYYY-MM-DD') AS date 
FROM generate_series(0, 365, 1) AS days
WHERE EXTRACT(ISODOW FROM (current_date - days)) NOT IN (6,7)

逻辑说明

  • 我们用EXTRACT(ISODOW FROM 日期)函数获取日期对应的星期序号,ISO标准下的星期序号规则为:1=周一、2=周二、3=周三、4=周四、5=周五、6=周六、7=周日
  • 直接过滤掉序号为6、7的日期即可实现排除周末的需求

可选优化

如果需要严格覆盖完整1年的时长(避免平年365天、闰年366天的差异),可以把generate_series的参数调整为动态计算的间隔天数:

SELECT to_char(date_trunc('day', (current_date - days)), 'YYYY-MM-DD') AS date 
FROM generate_series(0, (current_date - (current_date - INTERVAL '1 year')::date), 1) AS days
WHERE EXTRACT(ISODOW FROM (current_date - days)) NOT IN (6,7)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:15:07