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