2013-07-20 2 views
2

У меня есть последующий запрос, который позволит мне получить дату истечения срока действия подписки плана моего сайта:Как запросить дату и добавить 3 дня в результате?

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

Так что, если подписка плана конца следующего 27 июля выше возвращения запроса «27 07 2013». Теперь моя цель - изменить этот запрос, чтобы добавить еще 3 дня для окончательного возврата «30 07 2013», даже если реальная стоимость будет «27 07 2013».

Я полагаю, что можно добавить в запрос +3, но я не знаю правильного синтаксиса.

+0

Термин для этого является "дата арифметика" следующая время, когда оно появляется, и вам нужно, чтобы Google для него. –

ответ

0

Что-то, как это должно работать:

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

вычесть 3 дня:

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]' 

Fyi 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

Смежные вопросы