0

我有这个代码:

DATESUB(CURDATE(), INTERVAL x MONTH)

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

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

4

2 回答 2

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

于 2012-12-02T21:28:02.427 回答
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

于 2012-12-02T21:30:15.550 回答