选择所有以前的日期,并使用mysql选择6个月内的所有日期

时间:2016-09-04 14:16:23

标签: mysql date

我有一个mysql表,可以跟踪药物有效期。

DrugExpiry 表:

drugid, expiry_date
3       2016-08-10
2       2016-10-12

现在我想选择所有过期的药物和所有即将在六个月内过期的药物。

我尝试了以下选择,但它无法按预期工作。

SELECT * FROM lm_products 
        WHERE expiry_date= DATE_ADD(CURDATE(), INTERVAL 6 MONTH) 
        AND expiry_date<=DATE_SUB(CURDATE(), INTERVAL 1 DAY)

此选择返回一个空行。我哪里出错了?请帮忙。

2 个答案:

答案 0 :(得分:1)

你只需要正确的比较。我认为这是逻辑:

SELECT *
FROM lm_products 
WHERE expiry_date <= DATE_ADD(CURDATE(), INTERVAL 6 MONTH) 

换句话说,您希望将来的有效期限早于六个月。

答案 1 :(得分:1)

这是非常简单的逻辑,

 SELECT * FROM lm_products 
 WHERE expiry_date <= DATE_ADD(CURDATE(), INTERVAL 6 MONTH)

不需要DATE_SUB,将当前日期添加六个月并与expiry_date进行比较