【问题标题】:MySQL query: start date but no end dateMySQL查询:开始日期但没有结束日期
【发布时间】:2026-02-02 07:20:14
【问题描述】:

我正在查询一个数据库,该数据库从今天开始提取所有记录 - 90 天,然后是之后的任何记录。但是,我意识到我已经对我的查询进行了编码,所以它只能拉出 90 天的范围。所以我需要指明开始日期,但我不需要指明结束日期,我想要过去 90 天内的所有内容。

    SELECT project_id, project_name, project_end
    FROM projects
    WHERE project_end BETWEEN SYSDATE() - INTERVAL 90 DAY AND SYSDATE()
    ORDER BY project_id ASC;

因为这只会返回结束日期为今天 -90 的项目,而不会返回未来结束日期的项目。更复杂的是,有些项目根本没有输入结束日期(空值),有些项目输入的是 0000-00-00。

表示范围从 90 天前开始,然后继续向前,没有特定结束日期的最佳方式是什么?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    >=怎么样?

    WHERE project_end >= SYSDATE() - INTERVAL 90 DAY OR
          project_end IS NULL OR
          project_end = '0000-00-00'
    

    【讨论】:

    • 只是在做 project_end >= SYSDATE() - INTERVAL 90 DAY 是我需要的。我不希望它返回 null 或 0000-00-00 值。 (我会尽快接受这个作为答案)。谢谢JW!
    【解决方案2】:

    为什么需要间隔?我想你可以使用:

    WHERE
      project_end >= CURDATE() - INTERVAL 90 DAY
      OR COALESCE(project_end, '0000-00-00') = '0000-00-00'
    

    这将选择过去 90 天内具有 project_end 或具有 NULL 项目结束或项目结束 = '0000-00-00' 的所有项目

    【讨论】:

      最近更新 更多