当DATE为null时,MySQL DATE_ADD()

时间:2011-11-06 18:24:35

标签: mysql sql null dateadd

我的DATETIME值“some_date”在我的数据库中可以为null。当我尝试以下查询时,它不返回日期为null的那些行:

SELECT * 
FROM tabel
WHERE DATE_ADD(some_date, INTERVAL some_seconds SECOND) < NOW()

我是否可以编辑此查询,以便即使some_date为null,DATE_ADD()也会产生DATE?

2 个答案:

答案 0 :(得分:6)

您可以使用COALESCE将NULL日期转换为其他日期,例如:

select *
from table
where date_add(coalesce(some_date, now()), interval some_seconds second) < now()

COALESCE返回其第一个非NULL参数:

  

COALESCE(value, ...)
  返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL。

因此,您只需要决定使用哪个日期代替NULL some_date


如果您对NULL some_date的替换过去足够远,那么测试将始终通过,那么您可以使用:

where some_date is null
   or date_add(some_date, interval some_seconds second) < now()

如果它总是失败,那么:

where some_date is not null
  and date_add(some_date, interval some_seconds second) < now()

答案 1 :(得分:3)

使用以下查询可能会更清楚一些:

SELECT * 
FROM tabel
WHERE some_date IS NULL OR DATE_ADD(some_date, INTERVAL some_seconds SECOND) < NOW()