2011-08-11 22 views

Respuesta

62

Puede utilizar STR_TO_DATE() para convertir el número a una fecha, y luego de vuelta 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 a través de una gran cantidad de filas.

+0

impresionante. Gracias. –

+0

gracias por la advertencia. La consulta que estoy haciendo solo se remonta un año o dos, por lo que tiene un máximo de 24 filas. –

+0

Quizás podría almacenar los nombres de los meses en la tabla MEMORY y INNER JOIN. o aplicar eso en la aplicación ... – Dor

4

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

2

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

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

pero su uno es mucho mejor. :)

0

Tal forma puede obtener diferentes weekname idioma o nombre del mes

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. Abril de 2004

mismo para la marca de tiempo 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 de abril de 2004

Cuestiones relacionadas