Al manejar datos de fecha en SQL, a menudo es necesario mostrar los datos en un formato específico. Usando la función DATE_FORMAT() de MySQL, puedes convertir fácilmente los datos de fecha en varios formatos. Este artículo proporcionará una explicación detallada de cómo usar la función DATE_FORMAT(), desde el uso básico hasta ejemplos avanzados.
Uso Básico de la Función DATE_FORMAT()
La función DATE_FORMAT() se usa para convertir datos de fecha en un formato especificado. La sintaxis básica es la siguiente:
DATE_FORMAT(date, format)
date
: Los datos de fecha que deseas reformatearformat
: El formato deseado
Por ejemplo, para convertir la fecha 2024-05-23
del formato YYYY-MM-DD
al formato MM/DD/YYYY
, la consulta SQL sería la siguiente:
SELECT DATE_FORMAT('2024-05-23', '%m/%d/%Y') AS formatted_date;
El resultado de esta consulta será 05/23/2024
. A continuación, veamos más de cerca los especificadores de formato que se pueden usar con la función DATE_FORMAT().
Lista de Especificadores de Formato
La función DATE_FORMAT() puede mostrar fechas usando varios especificadores de formato. Aquí están los principales especificadores de formato:
Especificadores de Formato Relacionados con la Fecha
%Y
: Año de cuatro dígitos (por ejemplo, 2024)%y
: Año de dos dígitos (por ejemplo, 24)%m
: Mes de dos dígitos (01-12)%c
: Mes (1-12)%d
: Día de dos dígitos (01-31)%e
: Día (1-31)
Especificadores de Formato Relacionados con la Hora
%H
: Hora de dos dígitos en formato de 24 horas (00-23)%k
: Hora en formato de 24 horas (0-23)%h
: Hora de dos dígitos en formato de 12 horas (01-12)%I
: Hora en formato de 12 horas (01-12)%l
: Hora en formato de 12 horas (1-12)%i
: Minutos de dos dígitos (00-59)%s
: Segundos de dos dígitos (00-59)%p
: AM o PM
Otros Especificadores de Formato
%W
: Nombre del día de la semana (por ejemplo, Sunday)%a
: Nombre abreviado del día de la semana (por ejemplo, Sun)%M
: Nombre del mes (por ejemplo, January)%b
: Nombre abreviado del mes (por ejemplo, Jan)%j
: Día del año (001-366)
Combinando estos especificadores, puedes mostrar fechas en varios formatos. A continuación, veamos algunos ejemplos específicos de uso con estos especificadores.
Ejemplos Prácticos
Aquí hay algunos ejemplos de cómo convertir datos de fecha en varios formatos usando la función DATE_FORMAT().
Ejemplo 1: Cambiando el Formato de Fecha Estándar
En el siguiente ejemplo, la fecha 2024-05-23
se convierte al formato MM/DD/YYYY
.
SELECT DATE_FORMAT('2024-05-23', '%m/%d/%Y') AS formatted_date;
Resultado: 05/23/2024
Ejemplo 2: Mostrando Solo Mes y Año
Este ejemplo extrae y muestra el mes y el año de los datos de fecha.
SELECT DATE_FORMAT('2024-05-23', '%M %Y') AS formatted_date;
Resultado: May 2024
Ejemplo 3: Mostrando Fecha y Día de la Semana
Este ejemplo convierte la fecha a un formato que incluye la fecha y el nombre del día de la semana.
SELECT DATE_FORMAT('2024-05-23', '%W, %M %d, %Y') AS formatted_date;
Resultado: Thursday, May 23, 2024
Ejemplo 4: Formateando Datos de Tiempo
Este ejemplo convierte datos de tiempo al formato HH:MM AM/PM
.
SELECT DATE_FORMAT('2024-05-23 14:30:00', '%h:%i %p') AS formatted_time;
Resultado: 02:30 PM
Ejemplo 5: Mostrando Timestamps Completos
Este ejemplo cambia el formato de un timestamp completo que incluye tanto fecha como hora.
SELECT DATE_FORMAT('2024-05-23 14:30:00', '%Y-%m-%d %H:%i:%s') AS formatted_timestamp;
Resultado: 2024-05-23 14:30:00
Usa estos ejemplos como referencia para convertir datos de fecha en el formato requerido. A continuación, veamos ejemplos avanzados de uso de la función DATE_FORMAT().
Ejemplos Avanzados
Aprovechando la función DATE_FORMAT() se pueden manejar requisitos más complejos. Aquí hay algunos ejemplos que involucran múltiples columnas y cambios de formato condicionales.
Ejemplo 1: Formateando Fechas Usando Múltiples Columnas
Este ejemplo muestra cómo mostrar múltiples columnas de fecha en diferentes formatos.
SELECT
DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_order_date,
DATE_FORMAT(delivery_date, '%M %d, %Y') AS formatted_delivery_date
FROM orders;
Esta consulta muestra order_date
en formato YYYY-MM-DD
y delivery_date
en formato Month DD, YYYY
.
Ejemplo 2: Cambio de Formato Condicional
Este ejemplo muestra cómo cambiar el formato basado en una condición. Aquí, el formato de fecha cambia según el valor de la columna status
.
SELECT
order_id,
status,
CASE
WHEN status = 'shipped' THEN DATE_FORMAT(ship_date, '%M %d, %Y')
ELSE DATE_FORMAT(order_date, '%Y-%m-%d')
END AS formatted_date
FROM orders;
Esta consulta muestra ship_date
en formato Month DD, YYYY
si el status
es shipped
; de lo contrario, muestra order_date
en formato YYYY-MM-DD
.
Ejemplo 3: Formateando Fechas Generadas Dinámicamente
Este ejemplo muestra cómo generar y formatear dinámicamente la fecha actual.
SELECT DATE_FORMAT(NOW(), '%W, %M %d, %Y %h:%i %p') AS current_datetime;
Esta consulta muestra la fecha y hora actual en formato Weekday, Month Day, Year Hour:Minute AM/PM
.
Ejemplo 4: Formato de Fecha Específico por Localidad
Este ejemplo muestra cómo mostrar fechas según formatos específicos de una localidad. Por ejemplo, mostrando fechas en formato de la localidad japonesa.
SELECT DATE_FORMAT(order_date, '%Y年%m月%d日') AS formatted_date_jp
FROM orders;
Esta consulta muestra order_date
en el formato de la localidad japonesa YYYY年MM月DD日
.
Usa estos ejemplos avanzados como guía para aprovechar flexiblemente la función DATE_FORMAT(). A continuación, resumiremos los puntos clave del uso de la función DATE_FORMAT() y proporcionaremos consejos para su aplicación práctica.
Resumen
La función DATE_FORMAT() es una herramienta poderosa en MySQL para cambiar flexiblemente el formato de los datos de fecha. Desde el uso básico hasta los especificadores de formato detallados, ejemplos prácticos y casos de uso avanzados, has aprendido cómo manipular los datos de fecha libremente. Aquí están los puntos clave:
Puntos Clave de la Función DATE_FORMAT()
- Sintaxis Básica: Usa
DATE_FORMAT(date, format)
para convertir una fecha en un formato especificado. - Especificadores de Formato: Combina varios especificadores para año, mes, día, hora, día de la semana, etc., para opciones de visualización versátiles.
- Ejemplos Prácticos: Cambios estándar de formato de fecha y visualización específica de tiempo.
- Ejemplos Avanzados: Cambios de formato para múltiples columnas, cambios de formato condicionales, fechas generadas dinámicamente y visualizaciones específicas por localidad.
Dominando la función DATE_FORMAT(), puedes presentar datos de fecha recuperados de la base de datos en un formato legible, mejorando la calidad de las aplicaciones e informes. Asegúrate de utilizarla en tus operaciones y análisis de datos diarios.