sql >> Base de Datos >  >> RDS >> Mysql

TIME_FORMAT() Ejemplos – MySQL

En MySQL, puede usar el TIME_FORMAT() función para formatear un valor de tiempo.

Esta función funciona igual que DATE_FORMAT() función, excepto que el valor solo se puede formatear en horas, minutos, segundos y microsegundos.

Consulte la tabla al final de este artículo para obtener una lista de especificadores de formato que se pueden usar con esta función.

Sintaxis

La sintaxis es así:

TIME_FORMAT(time,format)

Donde time es el valor de tiempo que desea formatear, y format es la cadena de formato (esto determina cómo se formatea realmente el valor de tiempo).

Ejemplo 1:uso básico

Aquí hay un ejemplo para demostrarlo.

SELECT TIME_FORMAT('14:35:27', '%r') AS 'Result';

Resultado:

+-------------+
| Result      |
+-------------+
| 02:35:27 PM |
+-------------+

Este ejemplo usa el %r especificador de formato, que formatea la hora como 12 horas (hh:mm:ss seguido de AM o PM).

Ejemplo 2:formato más específico

Si usar un especificador de formato más general como en el ejemplo anterior no es adecuado, existen otros especificadores de formato que pueden ayudarlo a crear el formato que necesita.

Por ejemplo, si te gusta el formato anterior, pero no quieres que te devuelvan los segundos, puedes hacer esto:

SELECT TIME_FORMAT('14:35:27', '%h:%i %p') AS 'Result';

Resultado:

+----------+
| Result   |
+----------+
| 02:35 PM |
+----------+

Ejemplo 3:horario de 24 horas

También hay especificadores de formato para 24 horas. Esta es la forma más fácil de formatear la hora utilizando el formato de 24 horas.

SELECT TIME_FORMAT('14:35:27', '%T') AS 'Result';

Resultado:

+----------+
| Result   |
+----------+
| 14:35:27 |
+----------+

Ejemplo 4 – Microsegundos

Aquí hay un ejemplo que incluye la parte de los segundos fraccionarios en el resultado:

SELECT TIME_FORMAT('14:35:27', '%H:%i:%s.%f') AS 'Result';

Resultado:

+-----------------+
| Result          |
+-----------------+
| 14:35:27.000000 |
+-----------------+

Por supuesto, también podemos incluir microsegundos en el valor de tiempo inicial:

SELECT TIME_FORMAT('14:35:27.123456', '%H:%i:%s.%f') AS 'Result';

Resultado:

+-----------------+
| Result          |
+-----------------+
| 14:35:27.123456 |
+-----------------+

Ejemplo 5:tiempo transcurrido

El tipo de datos de hora no está limitado a 24 horas. También se puede utilizar para representar el tiempo transcurrido. Cuando utilice esta función para el tiempo transcurrido, debe tener en cuenta cómo funcionan los especificadores de formato de hora con valores de tiempo fuera del rango de 0 a 23.

La documentación de MySQL establece lo siguiente:

Si el valor de la hora contiene una parte horaria mayor que 23 , el %H y %k los especificadores de formato de hora producen un valor mayor que el rango habitual de 0..23 . Los otros especificadores de formato de hora producen el módulo de valor de hora 12 .

Aquí hay un ejemplo para demostrarlo:

SELECT 
    TIME_FORMAT('24:00:00', '%H %k %h %I %l') AS '24',
    TIME_FORMAT('48:00:00', '%H %k %h %I %l') AS '48',
    TIME_FORMAT('100:00:00', '%H %k %h %I %l') AS '100',
    TIME_FORMAT('500:00:00', '%H %k %h %I %l') AS '500';

Resultado:

+----------------+----------------+-----------------+-----------------+
| 24             | 48             | 100             | 500             |
+----------------+----------------+-----------------+-----------------+
| 24 24 12 12 12 | 48 48 12 12 12 | 100 100 04 04 4 | 500 500 08 08 8 |
+----------------+----------------+-----------------+-----------------+

Especificadores de formato

Los siguientes especificadores se pueden utilizar para especificar el formato de retorno. Estos son un subconjunto de los disponibles con DATE_FORMAT() función. El valor del formato debe comenzar con un signo de porcentaje (% ).

Especificador Descripción
%f Microsegundos (000000 ..999999 )
%H Hora (00 ..23 )
%h Hora (01 ..12 )
%I Hora (01 ..12 )
%i Minutos, numérico (00 ..59 )
%k Hora (0 ..23 )
%l Hora (1 ..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 )
%% Un % literal personaje