这个领域真的是什么?

时间:2012-03-18 15:27:42

标签: mysql datetime

在MYSQL中,我在名为DT的DATETIME字段中插入了'0'。 使它成为“0000-00-00 00:00:00”。 我需要将DT与NOW()进行比较并判断结果是否过去。

某些日期有实际值,有些日期有'0'(如上所述得到“0000-00-00 00:00:00”)。 如何检查列DT + INTERVAL 3 MONTH<现在()?

谢谢!

2 个答案:

答案 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()