簡體   English   中英

MySQL:選擇日期加上6個月(如果少於now()則加上1個月)

[英]MySQL: Select date plus 6 months if less than now() plus 1 month

我有給定的日期:

2013-12-20

這是產品的發布日期 ,其中產品自發布之日起六個月內到期。 它沒有存儲的到期日期,所以我想從給定的發行日期檢查now()的下個月是否到期。

所以我的猜測是將6個月添加到發行日期,並立即檢查+ 1個月的間隔是否到期?

這是我嘗試過的:

SELECT * FROM `products` WHERE DATE_ADD(`issue_date`,INTERVAL 6 MONTH) 
< DATE(NOW() + INTERVAL 1 MONTH) ORDER BY `issue_date` ASC

我做錯了什么?

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個月=今天)

這里的建議可能會有所幫助
$ date = date(“ ymd”,strtotime(“ +6 months”));
這將導致從當前日期起6個月后的日期:
同樣,
從當前日期起一個月
$ date = date(“ ymd”,strtotime(“ + 1個月”));

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

您的查詢說選擇所有將在一個月內到期或已經到期的產品。 您可以使用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

Mysql中的Between子句

如果要檢查產品自發布之日起6個月后是否到期,並且是否要在下個月到期,則最好將此1個月添加到查詢的第6個月:

SELECT * FROM products WHERE issue_date <= DATE_ADD(issue_date,INTERVAL 7 MONTH)
ORDER BY issue_date ASC;

嘗試這個

SELECT * FROM `products` where DATE_ADD(`issue_date`,INTERVAL 6 MONTH) < CURDATE()

經過以下幾個回答,我最終對此進行了研究:

SELECT * FROM  `products` 
WHERE DATE_ADD(  `issue_date` , INTERVAL 6 MONTH ) 
< DATE(NOW() + INTERVAL 1 MONTH)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM