Как добавить несколько дней в функцию str to date mysql?
У меня есть таблица, в которой у меня есть строка даты, которая была в формате 01.04.2015. Теперь я хочу добавить несколько дней в этот столбец формата даты строки. Для этого у меня есть ниже запрос, чтобы добавить несколько дней.
SELECT DATE_ADD(level2,INTERVAL 28 DAY) level2 FROM sales_purchase_stocks_hs WHERE stock= '123'
Когда я запускаю этот запрос, я получаю неправильную дату выхода. Выход положен 2001-05-18 15:00:00. Но моя исходная строка даты была 01.04.2015 (1 апреля 2015 года).
Я попробовал с нижеприведенным запросом
SELECT STR_TO_DATE(DATE_ADD(level2,INTERVAL 28 DAY),'%d.%m.%Y') level2 FROM sales_purchase_stocks_hs WHERE stock = '123'.
Но когда я выполняю запрос, я получаю null в результате. Может ли кто-нибудь, пожалуйста, помочь мне там, где я я поступаю неправильно?
2 ответов:
Вы делаете это неправильно. Вам нужно сначала преобразовать строку date в реальную дату с помощью
str_to_date, а затем применить к нейdate_add().Вот как
str_to_dateработаетmysql> select str_to_date('01.04.2015','%d.%m.%Y') as date; +------------+ | date | +------------+ | 2015-04-01 | +------------+ 1 row in set (0.00 sec)Теперь используйте вышеизложенное внутри
date_add()так что у вас естьmysql> select date_add(str_to_date('01.04.2015','%d.%m.%Y'),interval 28 day) as date; +------------+ | date | +------------+ | 2015-04-29 | +------------+ 1 row in set (0.00 sec)Теперь вы можете использовать вышеизложенное в запросе.
SELECT DATE_ADD(`your_field_name`, INTERVAL 28 DAY)....Например, я добавляю сюда 10 дней,
mysql> select date_start from date_of_join where id = 23 ; +------------+ | date_start | +------------+ | 2012-02-03 | +------------+ 1 row in set (0.00 sec) mysql> SELECT DATE_ADD(`date_start`, INTERVAL 10 DAY) from date_of_join where id = 23 ; +-----------------------------------------+ | DATE_ADD(`date_start`, INTERVAL 10 DAY) | +-----------------------------------------+ | 2012-02-13 | +-----------------------------------------+ 1 row in set (0.00 sec)
Comments