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

SQL条件编写求助:根据日期字段非空状态设置查询条件

编写目标SQL条件

直接给你两种可行的写法,按需选择:

写法一:逻辑分支判断

这种写法通过AND和OR组合拆分逻辑,可读性强:

SELECT * 
FROM Table1 
JOIN Table2 ON Table2.ID = Table1.Table2_iD
WHERE 
    *conditions*
    AND (
        -- Table1.Date不为空时,判断自身是否在区间内
        (Table1.Date IS NOT NULL AND Table1.Date BETWEEN date1 AND date2)
        -- Table1.Date为空时,用Table2.Date加2个月后判断
        OR (Table1.Date IS NULL AND DATEADD(month, 2, Table2.Date) BETWEEN date1 AND date2)
    )

写法二:CASE表达式

用CASE统一处理日期后再判断区间,逻辑更紧凑:

SELECT * 
FROM Table1 
JOIN Table2 ON Table2.ID = Table1.Table2_iD
WHERE 
    *conditions*
    AND CASE
        WHEN Table1.Date IS NOT NULL THEN Table1.Date
        ELSE DATEADD(month, 2, Table2.Date)
    END BETWEEN date1 AND date2

注意不同数据库的日期函数差异

  • MySQL/MariaDB:替换DATEADD(month, 2, Table2.Date)为DATE_ADD(Table2.Date, INTERVAL 2 MONTH)
  • PostgreSQL:替换为Table2.Date + INTERVAL '2 months'
  • Oracle:替换为ADD_MONTHS(Table2.Date, 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:48:22