MYSQL:将NULL日期与CURRENT_DATE进行比较

Vil*_*lle 9 mysql date

我有一个MYSQL表,其中包含"date_start"和"date_end"字段的新闻文章,以指示在网站上显示哪些新闻.如果date_start在今天之前并且date_end尚未过去(今天之后),则文章是公开的.

问题:如果文章是永久性的并且没有过期,我想让管理员将date_end留空.这当然不适合我的选择:

 SELECT * FROM pf_news WHERE date_start <= CURRENT_DATE() AND date_end >= CURRENT_DATE()
Run Code Online (Sandbox Code Playgroud)

它遗漏了一篇文章NULL date_end.我尝试用IF语句播放一下,但它让我感到困惑.有没有一种简单的方法可以做到这一点,或者我应该将date_end设置为3000-01-01是否为空?:)

Ioa*_*mas 21

你可以尝试:

SELECT * FROM pf_news WHERE date_start <= CURRENT_DATE() AND 
(date_end >= CURRENT_DATE() OR date_end IS NULL)
Run Code Online (Sandbox Code Playgroud)

或者一些类似的逻辑分组.


Sal*_*lil 1

从一开始我就收到你的问题你想要这个

A] date_end 大于当前日期或如果为 null

SELECT * FROM pf_news 
         WHERE date_start <= CURRENT_DATE() AND (date_end >= CURRENT_DATE() OR date_end IS NULL )
Run Code Online (Sandbox Code Playgroud)

B] date_end 必须存在并且晚于当前日期

SELECT * FROM pf_news 
         WHERE date_start <= CURRENT_DATE() AND
               date_end >= CURRENT_DATE()   AND 
               date_end IS NOT NULL
Run Code Online (Sandbox Code Playgroud)