MySQL:如果小于now()加1个月,选择日期加6个月

时间:2014-03-24 07:41:17

标签: php mysql sql date

我有一个给定的日期:

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

我做错了什么?

7 个答案:

答案 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;

  • 必须退回的第一个项目今天截止日期(因此发布日期+ 6个月=今天);
  • 明天到期日(发行日期+ 6个月+ 1天=今天);
  • ...
  • 比到期日起一个月(所以发行日期+ 6个月+ 1个月=发行日期+ 7个月=今天)

答案 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

Between clause in Mysql

答案 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)