我是程序编程和 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');
最佳答案
您在这里遇到了几个问题,您的 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”类型的返回值,这实际上就是您想要的。
关于mysql - 如何在MySQL中减去上一年,但添加月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20278624/