MySQL WHERE日期> 15天

时间:2015-03-02 03:38:59

标签: mysql

我有三张桌子。客户,DVD,电影。这是我需要制作的最后一份报告,它正在绊倒我。我目前有一个字段:dvd.Due_Date,这是产品到期的日期。我需要检索截止日期是当前日期之后15天的所有文件。

这是我到目前为止所做的:

    SELECT customer.customer_id,
 customer.customer_fname,
 customer.customer_lname,
 customer.customer_phone,
 customer.customer_email,
 dvd.DVD_ID, movie.Movie_Title,
 dvd.Rental_Date, dvd.Due_Date
 FROM customer INNER JOIN dvd
 ON customer.customer_id = dvd.customer_id 
INNER JOIN movie ON dvd.Movie_ID = movie.Movie_ID
 WHERE DATEDIFF(Due_Date, CURDATE() ) > 15

我没有收到任何错误,我只是没有得到任何结果,即使我有多个项目列为截止日期为2月10日。如果我删除了WHERE语句之外的所有内容,我确实得到了我想要的所有信息,所以我知道这至少有效。

2 个答案:

答案 0 :(得分:0)

我不确定“截止日期是当前日期后15天的所有文件”的含义。但是,尝试使用这样的逻辑:

SELECT c.customer_id, c.customer_fname, c.customer_lname, c.customer_phone, c.customer_email, d.DVD_ID, m.Movie_Title, d.Rental_Date, d.Due_Date
FROM customer c INNER JOIN
     dvd d
     ON c.customer_id = d.customer_id INNER JOIN
     movie m
     ON d.Movie_ID = m.Movie_ID
WHERE due_date >= date_sub(curdate(), interval 15 day);

您可能需要date_add()

答案 1 :(得分:0)

对于DATEDIFF,如果第一个项目的日期小于第二个项目,那么它将返回一个负数(因此永远不会大于16)而不是一个正数。所以翻转它们,你想要将后一个日期作为第一个参数:

... WHERE DATEDIFF( CURDATE(), Due_Date ) > 15