我有三张桌子。客户,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语句之外的所有内容,我确实得到了我想要的所有信息,所以我知道这至少有效。
答案 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