Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/01/2012, 10:14
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: fecha con nombre de dia y meses en español

Hola juancenter:

La solución que da MaxDgy es válida sólo para PHP, pero podrías hacer lo mismo desde MySQL para hacerlo válido para cualquier lenguaje de programación.

Para obtener el nombre del día en español, podrás hacer algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT fecha,
  2.     -> CASE DAYOFWEEK(fecha)
  3.     -> WHEN 1 THEN 'Domingo'
  4.     -> WHEN 2 THEN 'Lunes'
  5.     -> WHEN 3 THEN 'Martes'
  6.     -> WHEN 4 THEN 'Miércoles'
  7.     -> WHEN 5 THEN 'Jueves'
  8.     -> WHEN 6 THEN 'Viernes'
  9.     -> WHEN 7 THEN 'Sábado'
  10.     -> END nombre_dia
  11.     -> FROM tabla;
  12. +------------+------------+
  13. | fecha      | nombre_dia |
  14. +------------+------------+
  15. | 2012-01-01 | Domingo    |
  16. | 2012-01-02 | Lunes      |
  17. | 2012-01-03 | Martes     |
  18. | 2012-01-04 | Miércoles  |
  19. | 2012-01-05 | Jueves     |
  20. | 2012-01-06 | Viernes    |
  21. | 2012-01-07 | Sábado     |
  22. +------------+------------+
  23. 7 rows in set (0.00 sec)

Algo similar podrías hacer para los meses:

Código MySQL:
Ver original
  1. mysql> SELECT fecha,
  2.     -> CASE MONTH(fecha)
  3.     -> WHEN 1 THEN 'Enero'
  4.     -> WHEN 2 THEN 'Febrero'
  5.     -> WHEN 3 THEN 'Marzo'
  6.     -> WHEN 4 THEN 'Abril'
  7.     -> WHEN 5 THEN 'Mayo'
  8.     -> WHEN 6 THEN 'Junio'
  9.     -> WHEN 7 THEN 'Julio'
  10.     -> WHEN 8 THEN 'Agosto'
  11.     -> WHEN 9 THEN 'Septiembre'
  12.     -> WHEN 10 THEN 'Octubre'
  13.     -> WHEN 11 THEN 'Noviembre'
  14.     -> WHEN 12 THEN 'Diciembre'
  15.     -> END nombre_mes
  16.     -> FROM tabla;
  17. +------------+------------+
  18. | fecha      | nombre_mes |
  19. +------------+------------+
  20. | 2012-01-01 | Enero      |
  21. | 2012-02-01 | Febrero    |
  22. | 2012-03-01 | Marzo      |
  23. | 2012-04-01 | Abril      |
  24. | 2012-05-01 | Mayo       |
  25. | 2012-06-01 | Junio      |
  26. | 2012-07-01 | Julio      |
  27. | 2012-08-01 | Agosto     |
  28. | 2012-09-01 | Septiembre |
  29. | 2012-10-01 | Octubre    |
  30. | 2012-11-01 | Noviembre  |
  31. | 2012-12-01 | Diciembre  |
  32. +------------+------------+
  33. 12 rows in set (0.00 sec)

Puedes crear una función en MySQL para hacer estas consultas, sería la forma más recomendable, o podrías utilizarla directamente:

Código MySQL:
Ver original
  1. mysql>mysql> SELECT fecha, CONCAT (
  2.     -> CASE DAYOFWEEK(fecha)
  3.     -> WHEN 1 THEN 'Domingo'
  4.     -> WHEN 2 THEN 'Lunes'
  5.     -> WHEN 3 THEN 'Martes'
  6.     -> WHEN 4 THEN 'Miércoles'
  7.     -> WHEN 5 THEN 'Jueves'
  8.     -> WHEN 6 THEN 'Viernes'
  9.     -> WHEN 7 THEN 'Sábado'
  10.     -> END
  11.     -> ,', ', DATE_FORMAT(fecha, '%d'), ' de ',
  12.     -> CASE MONTH(fecha)
  13.     -> WHEN 1 THEN 'Enero'
  14.     -> WHEN 2 THEN 'Febrero'
  15.     -> WHEN 3 THEN 'Marzo'
  16.     -> WHEN 4 THEN 'Abril'
  17.     -> WHEN 5 THEN 'Mayo'
  18.     -> WHEN 6 THEN 'Junio'
  19.     -> WHEN 7 THEN 'Julio'
  20.     -> WHEN 8 THEN 'Agosto'
  21.     -> WHEN 9 THEN 'Septiembre'
  22.     -> WHEN 10 THEN 'Octubre'
  23.     -> WHEN 11 THEN 'Noviembre'
  24.     -> WHEN 12 THEN 'Diciembre'
  25.     -> END, ' de ', DATE_FORMAT(fecha, '%Y')) fecha_completa
  26.     -> FROM tabla;
  27. +------------+----------------------------------+
  28. | fecha      | fecha_completa                   |
  29. +------------+----------------------------------+
  30. | 2012-01-01 | Domingo, 01 de Enero de 2012     |
  31. | 2012-02-01 | Miércoles, 01 de Febrero de 2012 |
  32. | 2012-03-01 | Jueves, 01 de Marzo de 2012      |
  33. | 2012-04-01 | Domingo, 01 de Abril de 2012     |
  34. | 2012-05-01 | Martes, 01 de Mayo de 2012       |
  35. | 2012-06-01 | Viernes, 01 de Junio de 2012     |
  36. | 2012-07-01 | Domingo, 01 de Julio de 2012     |
  37. | 2012-08-01 | Miércoles, 01 de Agosto de 2012  |
  38. | 2012-09-01 | Sábado, 01 de Septiembre de 2012 |
  39. | 2012-10-01 | Lunes, 01 de Octubre de 2012     |
  40. | 2012-11-01 | Jueves, 01 de Noviembre de 2012  |
  41. | 2012-12-01 | Sábado, 01 de Diciembre de 2012  |
  42. +------------+----------------------------------+
  43. 12 rows in set (0.00 sec)

Saludos
Leo.