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



我有这个代码:

DATESUB(CURDATE(), INTERVAL x MONTH)

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

例如,今天的月份是十二月。如果x是2,它将返回2012/10/02。我只想要十月

您可能希望使用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

我想你指的是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

相关内容

最新更新