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

Cómo agregar AM/PM a un valor de hora o fecha y hora en MariaDB

MariaDB incluye muchas funciones que le permiten devolver valores de hora y fecha y hora en una variedad de formatos.

Dos funciones le permiten formatear la porción de tiempo usando un reloj de 12 horas, con el designador AM/PM son DATE_FORMAT() y TIME_FORMAT() .

Hay muchos especificadores de formato que se pueden usar con estas funciones, pero solo un par de ellos devuelven el designador AM/PM.

El %r Especificador de formato

El %r El especificador de formato se utiliza para dar formato a la hora en formato de 12 horas, seguido del designador AM/PM.

Ejemplo:

SELECT DATE_FORMAT('2030-03-10 18:10:37', '%r');

Resultado:

+------------------------------------------+
| DATE_FORMAT('2030-03-10 18:10:37', '%r') |
+------------------------------------------+
| 06:10:37 PM                              |
+------------------------------------------+

El tiempo resultante se muestra como si hubiera sido formateado usando la siguiente cadena de formato:'%I:%i:%S %p' .

Obviamente, si devuelve AM o PM depende del tiempo real. Horas antes de las 12:00:00 volver AM y las horas posteriores a eso regresan PM .

Esto es lo que sucede si cambiamos la hora para que llegue antes de las 12:00:00 :

SELECT DATE_FORMAT('2030-03-10 06:10:37', '%r');

Resultado:

+------------------------------------------+
| DATE_FORMAT('2030-03-10 06:10:37', '%r') |
+------------------------------------------+
| 06:10:37 AM                              |
+------------------------------------------+

Ambos DATE_FORMAT() y TIME_FORMAT() acepta el %r especificador de formato, por lo que podemos usar el mismo especificador de formato con TIME_FORMAT() función:

SELECT TIME_FORMAT('06:10:37', '%r');

Resultado:

+-------------------------------+
| TIME_FORMAT('06:10:37', '%r') |
+-------------------------------+
| 06:10:37 AM                   |
+-------------------------------+

TIME_FORMAT() acepta valores de tiempo así como valores de fecha y hora, mientras que DATE_FORMAT() solo acepta valores de fecha y fecha y hora. Sin embargo, TIME_FORMAT() solo acepta especificadores de formato para horas, minutos y segundos. Ver como %r devuelve horas, minutos y segundos, esto también se acepta.

El %p Especificador de formato

El %p El especificador de formato es un especificador de formato más específico que se utiliza únicamente para representar el designador AM/PM. Normalmente se usa junto con otros especificadores de formato para devolver la hora en un formato personalizado.

Como se mencionó, el %r El especificador de formato formatea la hora como si hubiera sido formateada usando la siguiente cadena de formato:'%I:%i:%S %p' .

Usemos esa cadena explícitamente:

SELECT TIME_FORMAT('18:10:37', '%I:%i:%S %p');

Resultado:

+----------------------------------------+
| TIME_FORMAT('18:10:37', '%I:%i:%S %p') |
+----------------------------------------+
| 06:10:37 PM                            |
+----------------------------------------+

Entonces obtenemos el mismo resultado que cuando usamos %r especificador de formato.

Sin embargo, un beneficio de usar este método es que podemos construir la salida a nuestra manera personalizada.

Por ejemplo:

SELECT TIME_FORMAT('18:10:37', '%l:%i %p');

Resultado:

+-------------------------------------+
| TIME_FORMAT('18:10:37', '%l:%i %p') |
+-------------------------------------+
| 6:10 PM                             |
+-------------------------------------+

Aquí, usamos %l para devolver la parte de la hora sin el cero inicial. También omitimos la parte de los segundos del tiempo.

Consulte Cadenas de formato de MariaDB para obtener una lista completa de los especificadores de formato que se pueden usar con estas funciones.