sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona DATE_FORMAT() en MariaDB

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.