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

如何编写SQL WHERE子句查询近1个月且排除本周的数据

筛选逻辑优化方案

你现有代码已经完成了最近1个月的日期筛选,只需要在WHERE子句中追加排除本周的条件即可,不需要用到datepart、getdate函数,适配你当前的SQL运行环境。

修改后完整SQL

select * 
from `table`
where 
  -- 筛选最近1个月数据:保留当前月往前推1个月之后的记录
  DATE(date) > DATE_SUB(DATE_TRUNC(CURRENT_DATE(), month), INTERVAL 1 month )
  -- 排除本周数据:仅保留日期早于本周第一天的记录
  AND DATE(date) < DATE_TRUNC(CURRENT_DATE(), week)

逻辑说明

  • DATE_TRUNC(CURRENT_DATE(), week)会返回当前周的起始日期,不同数据库默认周起始规则可能有区别(部分默认周一为周起始,部分默认周日为周起始),如果需要调整周起始规则,可对应修改DATE_TRUNC的周参数即可
  • 只要业务数据日期小于本周起始日期,就会自动排除整周的所有数据,和你原有筛选逻辑完全兼容
  • 按你提供的样例数据测试:若当前日期为2021-11-25,DATE_TRUNC(CURRENT_DATE(), week)返回2021-11-22,则id为1的2021-11-25属于本周被过滤,id为2的2021-10-28符合条件被保留,id为3的日期超出1个月范围被过滤,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:54:07