当DATE为null时,MySQL DATE_ADD()

Big*_*igJ 1 mysql sql null dateadd

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

SELECT * 
FROM tabel
WHERE DATE_ADD(some_date, INTERVAL some_seconds SECOND) < NOW()
Run Code Online (Sandbox Code Playgroud)

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

mu *_*ort 7

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

select *
from table
where date_add(coalesce(some_date, now()), interval some_seconds second) < now()
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

如果它总是会失败,那么:

where some_date is not null
  and date_add(some_date, interval some_seconds second) < now()
Run Code Online (Sandbox Code Playgroud)