基本上,我正在做这样的事情:
select a.name from schedule as a
where date(now()) <= a.dateTo;
但a.dateTo
可以为空。所以,我想要一个查询来做这样的事情:
select a.name from schedule as a
where date(now()) <= a.dateTo IF a.dateTo is not null;
这只是解释我想要实现的目标的简单方法。
有什么想法吗?
更新
以下示例可能会更好地了解所需内容
select a.name from schedule as a
where date(now()) >= a.dateFrom and
date(now()) <= a.dateTo;
如果我添加OR a.dateTo is null
,我认为它会覆盖第一个条件:date(now()) >= a.dateFrom
,这不是所需的查询。使用AND
会发生类似情况。
如果a.dateTo
为空,则为&gt; date(now()),如果第一个条件也适用,则应检索这些记录:date(now()) >= a.dateFrom
感谢您的帮助
答案 0 :(得分:1)
select a.name from schedule as a where curdate() <= ifnull(a.dateTo,curdate());
答案 1 :(得分:0)
您可以使用and
和or
逻辑运算符:
where date(now()) <= a.dateTo
OR a.dateTo is null
答案 2 :(得分:0)
我没有测试它,但像
SELECT a.name FROM schedule as a WHERE (a.dateTo IS NOT NULL AND date(now()) <= a.dateTo)
应该有效
答案 3 :(得分:0)
怎么样:
SELECT a.name FROM schedule AS a WHERE date(NOW()) <= a.dateTo AND a.dateTo IS NOT NULL
我认为这会奏效。
答案 4 :(得分:0)
我不完全确定我理解你希望NULL
值如何表现,但也许这对你有用:
SELECT a.name
FROM schedule AS a
WHERE DATE(NOW()) >= a.dateFrom
AND DATE(NOW()) <= COALESCE(a.dateTo, NOW());
但这与说
非常相似SELECT a.name
FROM schedule AS a
WHERE DATE(NOW()) >= a.dateFrom
AND (a.dateTo IS NULL OR DATE(NOW()) < a.dateTo)
不确定哪个更有效率。