mysql - 如何在MySQL中减去上一年,但添加月份?

标签 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'); 

最佳答案

您在这里遇到了几个问题,您的 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/

相关文章:

mySQL 跨数据库子查询/连接?

c - 如何解决这个特殊的嵌套 for 循环练习?

c - 为单元测试构建过程代码

oop - API — CFC与cfinclude

PHP REDIS/MYSQL,并发连接问题

php - 如何将一个表中的值数组匹配到另一个表并使用 php 显示匹配的值

haskell - 了解作家类型

functional-programming - 证明 LISP 没有功能

php - 想要删除任何唯一用户 ID 超过 50 项

unit-testing - Elixir /ExUnit : passing context from testcase to teardown/cleanup method (on_exit) possible?