0

我是程序编程和 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'); 
4

1 回答 1

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' 类型的返回值,这实际上就是你想要的。

于 2013-11-29T05:22:02.623 回答