2013-07-20 44 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