dayname - MySQL MONTHNAME() a partir de números
mysql format date month name (4)
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. :)
¿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
?
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
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''));