我是程序编程和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');
答案 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'类型的返回值,这实际上就是您想要的。