来自数字的MySQL MONTHNAME()

时间:2011-08-11 13:54:37

标签: mysql

无论如何只从月份(1-12)获得MONTHNAME()?例如,如果我有6,7,8,那么在MySQL中是否有任何原生方式将它们转换为June,July,August

5 个答案:

答案 0 :(得分:73)

您可以使用STR_TO_DATE()将数字转换为日期,然后返回MONTHNAME()

SELECT MONTHNAME(STR_TO_DATE(6, '%m'));

+---------------------------------+
| MONTHNAME(STR_TO_DATE(6, '%m')) |
+---------------------------------+
| June                            |
+---------------------------------+

警告:如果在很多行上完成,这可能会很慢。

答案 1 :(得分:5)

有点丑陋的方式是SELECT MONTHNAME(CONCAT('2011-',8,'-01'));

答案 2 :(得分:2)

在阅读迈克尔的伟大答案之前,我曾想过这样的事情

select elt(3,'January','February','March',....)
但是他的一个好多了。 :)

答案 3 :(得分:0)

这样您可以获得不同的语言周名或月份名称

本地化工作日:

`SELECT ELT( WEEKDAY('2004-04-10')+1, 'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag');`

带月份的长版:

`SELECT DATE_FORMAT( '2004-04-10', CONCAT( ELT( WEEKDAY('2004-04-10')+1, 'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'),', %d. ', ELT( MONTH('2004-04-10'), 'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'),' %Y'));`

- > Samstag,2004年4月10日

对于unix-timestamp:

`SELECT DATE_FORMAT( FROM_UNIXTIME(1081548000), CONCAT( ELT( WEEKDAY(FROM_UNIXTIME(1081548000))+1, 'Mo','Di','Mi','Do','Fr','Sa','So'),', %d. ', ELT( MONTH(FROM_UNIXTIME(1081548000)), 'Jan.','Feb.','März','April','Mai','Juni','Juli','Aug.','Sept.','Okt.','Nov.','Dez.'),' %Y'));`

- > Sa,2004年4月10日

答案 4 :(得分:0)

尝试:选择1月的月份名称('2016-01-01')或3月的选择月份名称('2016-03-01')