在MYSQL中,我在名为DT的DATETIME字段中插入了'0'。 使它成为“0000-00-00 00:00:00”。 我需要将DT与NOW()进行比较并判断结果是否过去。
某些日期有实际值,有些日期有'0'(如上所述得到“0000-00-00 00:00:00”)。 如何检查列DT + INTERVAL 3 MONTH<现在()?
谢谢!
答案 0 :(得分:1)
您似乎只想忽略0
个日期,因此您只需在0
子句中过滤掉WHERE
个日期,就像这样:
SELECT * FROM mytable
WHERE DT != '0000-00-00 00:00:00'
AND DATE_ADD(DT, INTERVAL 3 MONTH) < NOW()
这是该查询的优化版本。您应该尝试将您的函数放在标准的右侧,以便MySQL可以使用索引:
SELECT * FROM mytable
WHERE DT != '0000-00-00 00:00:00'
AND DT < DATE_ADD(NOW(), INTERVAL -3 MONTH)
答案 1 :(得分:0)
您可以使用DATE_ADD()
功能获取所需内容:
SELECT * FROM mytable WHERE DATE_ADD(`DT`, INTERVAL 3 MONTH) < NOW();
这将返回所有列(DT + INTERVAL 3 MONTH)&lt; NOW()