mysql.h


DATE_FORMAT()

DATE_FORMAT(fecha,formato)

Formatea el valor de fecha de acuerdo con la cadena de formato. Se pueden usar los siguientes especificadores para la cadena de formato:

Especificador Descripción
%M Nombre del mes (January..December)
%W Nombre de día (Sunday..Saturday)
%D Día del mes con sufijo en inglés (0th, 1st, 2nd, 3rd, etc.)
%Y Año, numérico con 4 dígitos
%y Año, numérico con 2 dígitos
%X Año para la semana donde el domingo es el primer día de la semana, numérico de 4 dígitos; usado junto con %V
%x Año para la semana donde el lunes es el primer día de la semana, numérico de 4 dígitos; usado junto con %v
%a Nombre de día de semana abreviado (Sun..Sat)
%d Día del mes, numérico (00..31)
%e Día del mes, numérico (0..31)
%m Mes, numérico (00..12)
%c Mes, numérico (0..12)
%b Nombre del mes abreviado (Jan..Dec)
%j Día del año (001..366)
%H Hora (00..23)
%k Hora (0..23)
%h Hora (01..12)
%I Hora (01..12)
%l Hora (1..12)
%i Minutos, numérico (00..59)
%r Tiempo, 12-horas (hh:mm:ss seguido por AM o PM)
%T Tiempo, 24-horas (hh:mm:ss)
%S Segundos (00..59)
%s Segundos (00..59)
%f Microsegundos (000000..999999)
%p AM o PM
%w Día de la semana (0=Sunday..6=Saturday)
%U Semana (00..53), donde el domingo es el primer día de la semana
%u Semana (00..53), donde el lunes es el primer día de la semana
%V Semana (01..53), donde el domingo es el primer día de la semana; usado con %X
%v Semana (01..53), donde el lunes es el primer día de la semana; usado con %X
%% Un '%' literal.

El resto de los caracteres se copian tal cual al resultado sin interpretación. El especificador de formato %f está disponible desde MySQL 4.1.1. Desde MySQL 3.23, se requiere el carácter '%' antes de los caracteres de especificación de formato. En versiones de MySQL más antiguas, '%' era opcional. El motivo por el que los rangos de meses y días empiecen en cero es porque MySQL permite almacenar fechas incompletas como '2004-00-00', desde MySQL 3.23.

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
+------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') |
+------------------------------------------------+
| Saturday October 1997                          |
+------------------------------------------------+
1 row in set (0.05 sec)

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
+------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s') |
+------------------------------------------------+
| 22:23:00                                       |
+------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
    ->                    '%D %y %a %d %m %b %j');
+------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00',       |
                   '%D %y %a %d %m %b %j') |
+------------------------------------------+
| 4th 97 Sat 04 10 Oct 277                 |
+------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
    ->                    '%H %k %I %r %T %S %w');
+------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00',       |
                   '%H %k %I %r %T %S %w') |
+------------------------------------------+
| 22 22 10 10:23:00 PM 22:23:00 00 6       |
+------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
+------------------------------------+
| DATE_FORMAT('1999-01-01', '%X %V') |
+------------------------------------+
| 1998 52                            |
+------------------------------------+
1 row in set (0.00 sec)