【问题标题】:Get records between 2 dates but sometimes they can be null获取两个日期之间的记录,但有时它们可​​能为空
【发布时间】:2015-08-18 09:27:31
【问题描述】:

我在数据库中有 2 个日期:start_date 和 end_date(输入 DATE)。有时 end_date 可以为空,这意味着如果 start_date NOW() >= of.start_date AND NOW() < of.end_date。 如何获取 end_date = NULL 的记录(在同一个查询中),这意味着如果 start_date

【问题讨论】:

    标签: mysql date


    【解决方案1】:

    使用coalesce() 或明确放入NULL 逻辑:

    where now() >= of.start_date and (of.end_date >= now() or of.end_date is null)
    

    【讨论】:

    • 太棒了!我不知道我怎么没想到。我还添加了其他条件: (NOW() >= of.start_date AND (of.end_date >= NOW() OR of.end_date IS NULL)) OR (of.start_date IS NULL AND of.end_date IS NULL) 似乎很好
    • 其实我注意到一个关于 NULL 的问题。当我提交没有开始和/或结束日期的表单时,字段中的值为 0000-00-00。最终条件是 (NOW() >= of.start_date AND (of.end_date >= NOW() OR of.end_date = '0000-00-00')) OR (of.start_date = '0000-00-00' AND of.end_date = '0000-00-00')
    猜你喜欢
    • 2019-03-14
    • 2016-08-04
    • 2011-08-12
    • 2012-10-17
    • 2013-04-16
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多