我有这个代码:
DATESUB(CURDATE(), INTERVAL x MONTH)
其中 x 在存储过程中。但是,我不需要找到 x 个月前的日期,而是只需要找出它是哪一个月,并将其标记为正确的英文。
例如,今天的月份是 12 月。如果 x 为 2,它将返回 2012/10/02。而不是这个,我只想要十月
我有这个代码:
DATESUB(CURDATE(), INTERVAL x MONTH)
其中 x 在存储过程中。但是,我不需要找到 x 个月前的日期,而是只需要找出它是哪一个月,并将其标记为正确的英文。
例如,今天的月份是 12 月。如果 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
作为结果返回
我假设你的意思是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