Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Exemplos de TIME_FORMAT() – MySQL


No MySQL, você pode usar o TIME_FORMAT() função para formatar um valor de tempo.

Esta função funciona exatamente como DATE_FORMAT() função, exceto que o valor só pode ser formatado em horas, minutos, segundos e microssegundos.

Consulte a tabela na parte inferior deste artigo para obter uma lista de especificadores de formato que podem ser usados ​​com essa função.


Sintaxe


A sintaxe fica assim:
TIME_FORMAT(time,format)

Onde time é o valor de tempo que você deseja formatar e format é a string de formato (isso determina como o valor de hora é realmente formatado).

Exemplo 1 – Uso básico


Aqui está um exemplo para demonstrar.
SELECT TIME_FORMAT('14:35:27', '%r') AS 'Result';

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

Este exemplo usa o %r especificador de formato, que formata a hora como 12 horas (hh:mm:ss seguido por AM ou PM).

Exemplo 2 – Formatação mais específica


Se o uso de um especificador de formato mais geral, como no exemplo anterior, não for adequado, existem vários outros especificadores de formato que podem ajudá-lo a criar o formato necessário.

Por exemplo, se você gosta do formato anterior, mas não quer que os segundos sejam retornados, você pode fazer isso:
SELECT TIME_FORMAT('14:35:27', '%h:%i %p') AS 'Result';

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

Exemplo 3 – 24 horas


Há também especificadores de formato para 24 horas. Aqui está a maneira mais fácil de formatar a hora usando 24 horas.
SELECT TIME_FORMAT('14:35:27', '%T') AS 'Result';

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

Exemplo 4 – Microssegundos


Aqui está um exemplo que inclui a parte dos segundos fracionários no resultado:
SELECT TIME_FORMAT('14:35:27', '%H:%i:%s.%f') AS 'Result';

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

Claro, também podemos incluir microssegundos no valor de tempo inicial:
SELECT TIME_FORMAT('14:35:27.123456', '%H:%i:%s.%f') AS 'Result';

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

Exemplo 5 – Tempo decorrido


O tipo de dados de hora não está limitado a 24 horas. Também pode ser usado para representar o tempo decorrido. Ao usar esta função para tempo decorrido, você deve estar ciente de como os especificadores de formato de hora funcionam com valores de hora fora do intervalo de 0 a 23.

A documentação do MySQL diz o seguinte:

Se o valor de hora contiver uma parte da hora maior que 23 , o %H e %k especificadores de formato de hora produzem um valor maior que o intervalo normal de 0..23 . Os outros especificadores de formato de hora produzem o módulo de valor de hora 12 .

Segue um exemplo para demonstrar:
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


Os especificadores a seguir podem ser usados ​​para especificar o formato de retorno. Estes são um subconjunto daqueles disponíveis com o DATE_FORMAT() função. O valor do formato deve começar com um sinal de porcentagem (% ).
Especificador Descrição
%f Microssegundos (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 ou PM
%r Hora, 12 horas (hh:mm:ss seguido por AM ou PM )
%S Segundos (00 ..59 )
%s Segundos (00 ..59 )
%T Horário, 24 horas (hh:mm:ss )
%% Um literal % personagem