MySQL MONTHNAME () a partir de números

¿Hay MONTHNAME() obtener MONTHNAME() solo del número del mes (1-12)? Por ejemplo, si tengo 6,7,8 ¿hay alguna forma nativa en MySQL para transformarlos en June,July,August ?

Puede usar STR_TO_DATE() para convertir el número a una fecha, y luego volver con MONTHNAME()

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

Advertencia: Esto podría ser lento si se hace en muchas filas.

Una forma algo fea sería SELECT MONTHNAME(CONCAT('2011-',8,'-01'));

Antes de leer la gran respuesta de Michael, había pensado algo como esto

 select elt(3,'January','February','March',....) 

pero el suyo es mucho mejor. 🙂

De esta forma puede obtener un nombre de semana o nombre de mes de idioma diferente

para localizar el día de la semana:

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

versión larga con mes:

 `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, 10. de abril de 2004

lo mismo para timestamp unix:

 `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, 10. Abril 2004