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

如何在SQL中每年固定排除指定日期范围(如12.15-12.26圣诞档)

SQL排除每年圣诞档期数据的修正方案

错误原因

你原查询无结果的核心是过滤条件逻辑冲突:第二个条件用AND连接了两个互斥的判断,要求12月的日期同时满足≤15日和≥26日,不存在符合该要求的日期,因此没有数据返回。

正确写法

过滤逻辑调整为「排除每年12月15日到26日的所有记录」即可,SQL如下:

SELECT
    *
FROM
    transactons
WHERE
    event_date BETWEEN TO_DATE('2016-12-01', 'YYYY-MM-DD')
                   AND TO_DATE('2021-12-31', 'YYYY-MM-DD')
    -- 排除每年12.15-12.26的记录
    AND NOT (
        EXTRACT(MONTH FROM event_date) = 12
        AND EXTRACT(DAY FROM event_date) BETWEEN 15 AND 26
    )

补充说明

  • 建议给TO_DATE函数显式指定日期格式参数,避免数据库默认日期格式和输入格式不匹配导致报错
  • 如果使用MySQL等支持MONTH()、DAY()内置函数的数据库,可以替换EXTRACT部分为MONTH(event_date) = 12、DAY(event_date) BETWEEN 15 AND 26,逻辑保持一致即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:00