如何减去前一年,但在MySQL中增加几个月?

时间:2013-11-29 04:56:47

标签: mysql functional-programming procedural-programming sql-date-functions

我是程序编程和mysql的新手,但假设我有一个函数PrevMonth(in_date date, in_mn_count int)第一个是日期,第二个是整数,预计是月数。该函数返回一个格式为'YYYY-MM'的字符串,即年份和月份,其中第一个参数中的年份是上一年,in_mn_count被添加到in_date。

例如,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'); 

1 个答案:

答案 0 :(得分:0)

这里有几个问题,DATE_FORMAT的格式错误,并且由于某些奇怪的原因,您将日期传递给DATE_ADD两次。

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

这样就可以了,因为12个月是1年。

请注意'%Y-%m'中的小'm',如果您需要'2011-05'类型的返回值,这实际上就是您想要的。