比较来自世界各地的卖家的域名和 IT 服务价格

MYSQL: 比较日期 NULL 从 CURRENT_DATE

我有一张桌子 MYSQL 与新闻文章有田地 "date_start" 和 "date_end", 指定在网站上显示哪个消息。 文章公开可用 date_start 是今天, date_end 尚未通过 /在今天之后/.

问题:
我希望管理员离开 date_end NULL, 如果文章是恒定的并且不会过期。 当然,这不适用于我的选择:


SELECT * FROM pf_news WHERE date_start <= CURRENT_DATE// AND date_end >= CURRENT_DATE//


他留下了文章
NULL date_end

. 我试图用陈述玩一点 IF, 但它让我感到困惑。 是否有一种简单的方法来做到,或者我应该刚安装 date_end 在
3000-01-01

, 如果它仍然是空的? :/
已邀请:

帅驴

赞同来自:

你可以尝试:


SELECT * FROM pf_news WHERE date_start <= CURRENT_DATE// AND 
/date_end >= CURRENT_DATE// OR date_end IS NULL/


或某种逻辑分组。

诸葛浮云

赞同来自:

你的最后一个报价听起来对。 您可以使用该功能 IFNULL. 他有两个论点。 如果第一个参数不是 null, 他返回第一个参数。 第二个论点 - 如果第一个参数相等,这是需要返回的 null. 因此,在您的应用程序中,您可以说以下内容:


SELECT * FROM pf_news WHERE date_start <= CURRENT_DATE// AND IFNULL/date_end, '3000-01-01'/ >= CURRENT_DATE//


它也可以使用 SQL Server, 但他们称之为函数 "ISNULL".

只需为自己安装日历提醒 12/31/2999, 要更改代码! :/

龙天

赞同来自:

从那点钟来看,我得到了你想要其中一个的问题

和] date_end 超过现在或者是 null


SELECT * FROM pf_news 
WHERE date_start <= CURRENT_DATE// AND /date_end >= CURRENT_DATE// OR date_end IS NULL /


B] date_end 必须出现并超过当前日期


SELECT * FROM pf_news 
WHERE date_start <= CURRENT_DATE// AND
date_end >= CURRENT_DATE// AND
date_end IS NOT NULL

小明明

赞同来自:

或尝试


SELECT * FROM pf_news WHERE date_start <= now// AND /date_end >= now// OR date_end = 0/


0, 它似乎对我来说很好

卫东

赞同来自:

然而,另一种可能性是使用 COALESCE, 他回来了第一个 null 列表值:


SELECT * FROM pf_news WHERE date_start <= CURRENT_DATE// AND 
COALESCE/date_end,'9999-1-1'/ >= CURRENT_DATE//


因此,如果
date_end

-这是 NULL, 未来的日期 " 9999-1-1 " 将在比较内使用。
但它将在此日期之后突破。 :-/

要回复问题请先登录注册