Este artículo contiene ejemplos de DATE_FORMAT()
función en MySQL.
El DATE_FORMAT()
La función le permite devolver una fecha en un formato específico. Por ejemplo, puede usarlo para devolver 2020-06-18 como jueves, junio de 2020 , o cualquier otro formato que necesites.
Sintaxis
La sintaxis es así:
DATE_FORMAT(date,format)
Donde date
es la fecha que desea formatear, y format
especifica cómo se debe formatear.
Para obtener una lista de especificadores de formato válidos, consulte la tabla al final de este artículo. El valor del formato debe comenzar con un signo de porcentaje (%
).
Ejemplo
Aquí hay un ejemplo para demostrarlo.
SELECT DATE_FORMAT('2020-06-18', '%W, %M %Y') AS 'Result';
Resultado:
+---------------------+ | Result | +---------------------+ | Thursday, June 2020 | +---------------------+
Nombres cortos/abreviados de días y meses
Aquí hay un ejemplo que formatea el resultado en nombres cortos de día y mes.
SELECT DATE_FORMAT('2020-06-18', '%a, %b %Y') AS 'Result';
Resultado:
+---------------+ | Result | +---------------+ | Thu, Jun 2020 | +---------------+
Un ejemplo de base de datos
Este es un ejemplo en el que formateamos el valor devuelto por una columna de la base de datos que se almacena como un valor de fecha y hora.
USE sakila; SELECT payment_date AS 'Date/Time', DATE_FORMAT(payment_date, '%W, %M %Y') AS 'Date' FROM payment WHERE payment_id = 1;
Resultado:
+---------------------+---------------------+ | Date/Time | Date | +---------------------+---------------------+ | 2005-05-25 11:30:37 | Wednesday, May 2005 | +---------------------+---------------------+
Dar formato a la hora
También puede usar DATE_FORMAT()
para formatear el componente de tiempo de un datetime valor. Ejemplo:
USE sakila; SELECT payment_date AS 'Date/Time', DATE_FORMAT(payment_date, '%h:%i:%s') AS 'Time' FROM payment WHERE payment_id = 1;
Resultado:
+---------------------+----------+ | Date/Time | Time | +---------------------+----------+ | 2005-05-25 11:30:37 | 11:30:37 | +---------------------+----------+
Aquí hay otro ejemplo donde agrego el AM/PM designador:
USE sakila; SELECT payment_date AS 'Date/Time', DATE_FORMAT(payment_date, '%h:%i %p') AS 'Time' FROM payment WHERE payment_id = 1;
Resultado:
+---------------------+----------+ | Date/Time | Time | +---------------------+----------+ | 2005-05-25 11:30:37 | 11:30 AM | +---------------------+----------+
Especificadores disponibles
Los siguientes especificadores se pueden utilizar para especificar el formato de retorno. El valor del formato debe comenzar con un signo de porcentaje (%
).
Especificador | Descripción |
---|---|
%a | Nombre abreviado del día de la semana (Sun ..Sat ) |
%b | Nombre abreviado del mes (Jan ..Dec ) |
%c | Mes, numérico (0 ..12 ) |
%D | Día del mes con sufijo en inglés (0th , 1st , 2nd , 3rd , …) |
%d | Día del mes, numérico (00 ..31 ) |
%e | Día del mes, numérico (0 ..31 ) |
%f | Microsegundos (000000 ..999999 ) |
%H | Hora (00 ..23 ) |
%h | Hora (01 ..12 ) |
%I | Hora (01 ..12 ) |
%i | Minutos, numérico (00 ..59 ) |
%j | Día del año (001 ..366 ) |
%k | Hora (0 ..23 ) |
%l | Hora (1 ..12 ) |
%M | Nombre del mes (January ..Dec ) |
%m | Mes, numérico (00 ..12 ) |
%p | AM o PM |
%r | Hora, 12 horas (hh:mm:ss seguido de AM o PM ) |
%S | Segundos (00 ..59 ) |
%s | Segundos (00 ..59 ) |
%T | Hora, 24 horas (hh:mm:ss ) |
%U | Semana (00 ..53 ), donde el domingo es el primer día de la semana; WEEK() modo 0 |
%u | Semana (00 ..53 ), donde el lunes es el primer día de la semana; WEEK() modo 1 |
%V | Semana (01 ..53 ), donde el domingo es el primer día de la semana; WEEK() modo 2; usado con %X |
%v | Semana (01 ..53 ), donde el lunes es el primer día de la semana; WEEK() modo 3; usado con %x |
%W | Nombre del día de la semana (Sunday ..Sat ) |
%w | Día de la semana (0 =Domingo..6 =sábado) |
%X | Año de la semana donde el domingo es el primer día de la semana, numérico, cuatro dígitos; usado con %V |
%x | Año de la semana, donde lunes es el primer día de la semana, numérico, cuatro dígitos; usado con %v |
%Y | Año, numérico, cuatro dígitos |
%y | Año, numérico (dos dígitos) |
%% | Un % literal personaje |
% | x , para cualquier “x ” no listado arriba |