我有一个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)
或者一些类似的逻辑分组.
从一开始我就收到你的问题你想要这个
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)