En MariaDB, DATE_FORMAT()
es una función de fecha y hora incorporada que formatea una fecha de acuerdo con la cadena de formato dada.
Requiere dos argumentos; la fecha y la cadena de formato. También acepta un tercer argumento opcional que le permite especificar la configuración regional.
Sintaxis
La sintaxis es así:
DATE_FORMAT(date, format[, locale])
Donde date
es la fecha, format
es la cadena de formato (consulte los especificadores de formato aceptados) y locale
es una configuración regional opcional para usar con el formato devuelto.
Ejemplo
He aquí un ejemplo:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y');
Resultado:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') | +----------------------------------------------------+ | Friday, 25th January 2030 | +----------------------------------------------------+
Aquí está de nuevo, pero esta vez usando %r
para devolver la hora devuelta en formato de 12 horas:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r');
Resultado:
+------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r') | +------------------------------------------+ | 10:30:45 AM | +------------------------------------------+
Podemos combinarlos para obtener la hora y la fecha:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y');
Resultado:
+-------------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') | +-------------------------------------------------------+ | 10:30:45 AM Friday, 25th January 2030 | +-------------------------------------------------------+
El idioma para los nombres de los meses, los nombres de los días, etc. está determinado por lc_time_names
variable del sistema. El valor predeterminado siempre es en_US
independientemente de la configuración regional del sistema. Aquí le mostramos cómo ver su configuración actual.
El argumento del lugar
A partir de MariaDB 10.3.2, se puede usar un tercer argumento opcional para especificar la configuración regional. Cuando se especifica esto, hace que la función sea independiente de la configuración de la sesión.
SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR');
Resultado:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') | +----------------------------------------------------+ | viernes, 25th enero 2030 | +----------------------------------------------------+
Aquí hay algunas configuraciones regionales más:
SELECT
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'fr_FR') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'hr_HR') AS hr_HR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'ms_MY') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'th_TH') AS th_TH;
Resultado:
fr_FR: vendredi, 25th janvier 2030 hr_HR: Petak, 25th Siječanj 2030 fr_FR: Jumaat, 25th Januari 2030 th_TH: ศุกร์, 25th มกราคม 2030
En este caso, el último es tailandés, y aunque usa caracteres tailandeses para el nombre del mes y el nombre del día, no cambia el año al calendario tailandés. El año 2030 sería 2573 usando el calendario tailandés. Así que supongo que la suposición es que si quieres usar el año tailandés, entonces la fecha que pases ya usará el año tailandés.
Fecha actual
Aquí, pasamos NOW()
como argumento de fecha para formatear la fecha actual:
SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y');
Resultado:
+---------------------------------------+ | DATE_FORMAT(NOW(), '%r %W, %D %M %Y') | +---------------------------------------+ | 09:53:00 AM Tuesday, 11th May 2021 | +---------------------------------------+
Argumentos no válidos
Cuando se pasan argumentos no válidos, DATE_FORMAT()
devuelve null
:
SELECT DATE_FORMAT('Homer', 'Simpson');
Resultado:
+---------------------------------+ | DATE_FORMAT('Homer', 'Simpson') | +---------------------------------+ | NULL | +---------------------------------+
Argumento faltante
Llamando a DATE_FORMAT()
con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:
SELECT DATE_FORMAT();
Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
Y otro ejemplo:
SELECT DATE_FORMAT('2030-05-21');
Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
El GET_FORMAT()
Función
También puede usar el GET_FORMAT()
función en el segundo argumento de DATE_FORMAT()
. Esto devuelve la cadena de formato completo para un formato de fecha determinado, lo que le evita tener que recordar la cadena de formato que debe usar.