在MySQL中简要地查找不到6个月前的行

时间:2012-07-31 09:43:16

标签: mysql date

我正试图在6个月前和今天之间找到我桌子上的条目。这是我目前正在运行的查询:

WHERE (DATE(l.date_fin) BETWEEN DATE(DATE_ADD(NOW(), INTERVAL -6 MONTH)) AND CURDATE())

然而,它看起来并不正确:感觉有一种更简洁和/或更快的方式来获得与此查询相同的结果。有没有这样的方式?

4 个答案:

答案 0 :(得分:8)

这应该足以得到你想要的东西:

WHERE l.date_fin > CURRENT_DATE() - INTERVAL 6 MONTH;

答案 1 :(得分:3)

这样的事情怎么样?

SELECT l.date_fin FROM table WHERE TIMESTAMPDIFF(MONTH,l.date_fin,NOW()) < 6

答案 2 :(得分:1)

简单的方法是:

WHERE DATE(l.date_fin) BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) AND CURRENT_DATE;

如果您在列date_fin上有索引,那么为了获得可以使用的最佳性能:

WHERE l.date_fin BETWEEN CAST(DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) AS DATETIME) AND
    DATE_SUB(CAST(DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) AS DATETIME), INTERVAL 1 MINUTE);

答案 3 :(得分:0)

SELECT l.date_fin FROM table WHERE l.date_fin between current_date and  current_date+interval -6 month