如何转换DATESUB(CURDATE(),INTERVAL X MONTH)来显示实际的月份

时间:2012-12-02 21:21:18

标签: mysql

我有这段代码:

DATESUB(CURDATE(), INTERVAL x MONTH)

其中x在存储过程中。然而,我没有找到x个月前的日期,而是需要找出它是哪个月,并将其标记为正确的英语。

例如今天是12月。如果x是2,它将返回2012/10/02。而不是这个,我只想要十月

2 个答案:

答案 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

请参阅SQL Fiddle with Demo

答案 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