2013-07-20 71 views
2

我有後續的查詢誰允許我讓我的網站的計劃認購的截止日期:如何查詢日期並在結果中添加3天?

SELECT DATE_FORMAT(`expiry_date`, '%d %m %Y') 
FROM `plan_cbsubs_subscriptions` 
WHERE `user_id` = '[user_id]' 

因此,如果計劃認購結束接下來的7月27日,上述查詢返回「27 07 2013」​​。現在我的目標是修改此查詢,以便最後返回「30 07 2013」​​,即使真實價值「27 07 2013」​​的時間再增加3天。

我想有可能在查詢+3的地方添加,但我不知道正確的語法。

+0

這個術語是 「日期計算」 下一個它出現的時候,你需要谷歌。 –

回答

0

像這樣的東西應該工作:

SELECT DATE_FORMAT(DATE_ADD(`expiry_date`,INTERVAL 3 DAY), '%d %m %Y') 
FROM `plan_cbsubs_subscriptions` 
WHERE `user_id` = '[user_id]'; 

減去三日遊:

SELECT DATE_FORMAT(DATE_SUB(`expiry_date`,INTERVAL 3 DAY), '%d %m %Y') 
FROM `plan_cbsubs_subscriptions` 
WHERE `user_id` = '[user_id]'; 

,你可以在這裏找到更多的信息:MySQL DateAdd

+0

我測試了您的解決方案,但這在我身邊不起作用。某處出現語法錯誤? 「波希米亞」解決方案的工作,但我不知道如何減少..任何線索? – dotcom22

+0

我編輯了我的解決方案。 – Oscerd

+0

偉大的解決方案工作...但現在我失去了我的格式%d%m%Y和你的代碼顯示2013-11-14 18:45:33。我試圖添加代碼,但我沒有看到正確的語法。 – dotcom22

1
SELECT DATE_FORMAT(DATE_ADD(`expiry_date`, INTERVAL 3 DAY) , '%d %m %Y') 
FROM `plan_cbsubs_subscriptions` 
WHERE `user_id` = '[user_id]' 
1

使用ADDDATE()

SELECT DATE_FORMAT(ADDDATE(`expiry_date`, 3), '%d %m %Y') 
FROM `plan_cbsubs_subscriptions` 
WHERE `user_id` = '[user_id]' 

據透露ADDDATE()將接受負數,如果你想減去天:

ADDDATE(`expiry_date`, -3) -- 3 days before 

MySQL也有SUBDATE(),所以你也可以這樣做:

SUBDATE(`expiry_date`, 3) -- 3 days before 
+0

非常好......如果我需要做相反的事情,那就意味着刪除3天? – dotcom22

+0

要麼將​​第二個參數乘以-1,要麼使用子日期,我想? – hd1

+0

對不起,我沒有看到你的意思。你能寫一個例子嗎? – dotcom22