0

Я новичок в процедурном программировании и mysql, но предположим, что у меня есть функция PrevMonth(in_date date, in_mn_count int) Первая - это дата, а вторая - целое число, которое, как ожидается, будет числом месяцев. Функция возвращает строку с форматом 'YYYY-MM', который является годом и месяцем, где год в первом параметре - в предыдущем году, а in_mn_count добавлен к in_date.Как вычесть из предыдущего года, но добавить месяцы в MySQL?

Например, a_testbed.PrevMonth('2012-05-19', 6) возвращает '2011-11'

Это то, что у меня есть:

set return_date := Date_format(DATE_ADD(in_date, INTERVAL -1 YEAR), 
DATE_ADD(in_date, INTERVAL in_mn_count MONTH),'%Y %M'); 

ответ

0

У вас есть несколько вопросов здесь, ваш формат DATE_FORMAT неправильно, и вы передаете дату через DATE_ADD дважды какая-то странная причина.

DATE_FORMAT(DATE_ADD(in_date, INTERVAL (in_mn_count-12) MONTH), '%Y-%m') 

Это сделало бы трюк, потому что 12 месяцев - 1 год.

Обратите внимание на небольшое «m» в «% Y-% m», это на самом деле то, что вы хотите, если хотите тип возвращаемого значения «2011-05».

+0

Мне нужно перейти в предыдущий год и добавить месяцы в in_date. Где год вычитается в DATE_ADD, чтобы попасть в предыдущий год? – user2966637

+0

Как это отличается от вычитания 12 месяцев? Вы нашли случай, когда вычитание 12 месяцев и вычитание 1 года дают разные результаты? – v010dya

+0

Значит, -12 представляет год вычитается? Это то, что кажется. – user2966637

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