我有这段代码:
DATESUB(CURDATE(), INTERVAL x MONTH)
其中x在存储过程中。然而,我没有找到x个月前的日期,而是需要找出它是哪个月,并将其标记为正确的英语。
例如今天是12月。如果x是2,它将返回2012/10/02。而不是这个,我只想要十月
答案 0 :(得分:1)
您可能希望使用DATE_FORMAT
:
DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL x MONTH), '%M')
如果您要使用:
select DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH), '%M') Month
结果会返回October
答案 1 :(得分:1)
我认为你的意思是DATE_SUB
而不是DATESUB
?在任何情况下,MONTHNAME
函数都可以执行您想要的操作。所以完整的表达式是MONTHNAME(DATE_SUB(CURDATE(), INTERVAL x MONTH))
。
请注意,这并不总是英文名称 - 它将给你的语言取决于mysql服务器的当前语言环境。见http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_monthname