1

我有两个可以为空的日期字段(PublishFrom、PublishTo)。我正在尝试使用此查询获取记录:

SELECT * FROM tblNews 
    WHERE Publish = 1 
    AND IFNULL(PublishFrom, CURDATE() - INTERVAL 1 DAY) <= "2015-03-13" 
    AND IFNULL(PublishTo, CURDATE() + INTERVAL 1 DAY) >= "2015-03-13" 
    ORDER BY DateCreated DESC'

意思是,如果(其中一个)这些字段的值为空,则将其替换为昨天和/明天的值,以便始终显示条目。

现在我只看到 PublishFrom 和/或 PublishTo 不为空的帖子。怎么来的?

4

2 回答 2

2

使用CURDATE() + 1or- 1将转换CURDATE并搞砸比较。 而是使用+ INTERVAL 1 DAY(或- INTERVAL 1 DAY

于 2015-03-13T20:34:55.077 回答
0

为什么不直接使用显式逻辑?

SELECT *
FROM tblNews 
WHERE Publish = 1  AND
     (PublishFrom <= '2015-03-13' OR PublishFrom IS NULL) AND
     (PublishTo >= '2015-03-13' OR PublishTo IS NULL)
ORDER BY DateCreated DESC
于 2015-03-13T20:44:28.917 回答