SQL用于获取日期时间为5天或更短时间的行

时间:2010-07-22 06:40:19

标签: sql mysql

我尝试了这个并返回了错误的行

SELECT `product_id`, `expiry` FROM `products_featured` 
WHERE `notified_expiry` = FALSE 
     AND `expiry` != 
    AND DATE_ADD(NOW(), INTERVAL 5 DAY) >= `expiry`

我想选择有效期限在5天之内的所有行。

返回的行是

    [0]=>   array(2) {
    ["product_id"]=>
    string(2) "26"
    ["expiry"]=>
    string(10) "2010-07-07" }

    [1]=>   array(2) {
    ["product_id"]=>
    string(2) "38"
    ["expiry"]=>
    string(10) "2010-07-24" }

    [2]=>   array(2) {
    ["product_id"]=>
    string(2) "39"
    ["expiry"]=>
    string(10) "2010-07-07" }

正如您所看到的,这些行中只有一行会在5天内发生(假设NOW()正在返回2010-07-22,我已经确认了这一行。

我做错了什么?感谢。

2 个答案:

答案 0 :(得分:2)

SELECT `product_id`, `expiry` FROM `products_featured` WHERE `notified_expiry` = FALSE AND `expiry` != 0 AND DATE_ADD(NOW(), INTERVAL 5 DAY) >= `expiry` AND NOW() <= `expiry`

答案 1 :(得分:1)

选择     product_idexpiry FROM products_featured 哪里     notified_expiry = FALSE     和expiry!= 0     和DATEDIFF(现在(),expiry)在0和5之间