我有一个给定的日期:
2013-12-20
产品的发布日期,产品自发布之日起6个月内到期。它没有存储到期日,所以我想在给定的发行日期检查它是否在now()的下个月到期。
所以我的猜测是在发行日期增加6个月,现在检查+ 1个月的间隔是否到期?
以下是我的尝试:
SELECT * FROM `products` WHERE DATE_ADD(`issue_date`,INTERVAL 6 MONTH)
< DATE(NOW() + INTERVAL 1 MONTH) ORDER BY `issue_date` ASC
我做错了什么?
答案 0 :(得分:1)
SELECT * FROM products
WHERE Now() <= DATE_ADD(issue_date, INTERVAL 7 MONTH)
&& Now() >= DATE_ADD(issue_date, INTERVAL 6 MONTH)
ORDER BY issue_date ASC;
答案 1 :(得分:0)
这是一个可能有用的建议
$ date = date(“y-m-d”,strtotime(“+ 6 months”));
这将导致从当前日期起6个月后的日期:
同样,
从当前日期开始的一个月
$ date = date(“y-m-d”,strtotime(“+1 months”));
答案 2 :(得分:0)
SELECT * FROM `products`
WHERE NOW() >= DATE_ADD(`issue_date`,INTERVAL 5 MONTH)
AND NOW() <= DATE_ADD(`issue_date`,INTERVAL 6 MONTH)
ORDER BY `issue_date` ASC
答案 3 :(得分:0)
您的查询说明选择将在一个月内过期或已过期的所有产品。您可以使用between
子句
SELECT * FROM `products` WHERE DATE_ADD(`issue_date`,INTERVAL 6 MONTH) between NOW() and DATE(NOW() + INTERVAL 1 MONTH) ORDER BY `issue_date` ASC
答案 4 :(得分:0)
如果您想检查产品是否在发布之日起6个月内到期,并且是否在下个月到期,则最好将此1个月添加到查询中的第6个月:
SELECT * FROM products WHERE issue_date <= DATE_ADD(issue_date,INTERVAL 7 MONTH)
ORDER BY issue_date ASC;
答案 5 :(得分:0)
试试这个
SELECT * FROM `products` where DATE_ADD(`issue_date`,INTERVAL 6 MONTH) < CURDATE()
答案 6 :(得分:0)
经过以下几个答案后,我最终解决了这个问题:
SELECT * FROM `products`
WHERE DATE_ADD( `issue_date` , INTERVAL 6 MONTH )
< DATE(NOW() + INTERVAL 1 MONTH)