No MariaDB,
TIME_FORMAT()
é uma função de data e hora integrada que formata um valor de hora de acordo com a string de formato fornecida. Funciona de forma semelhante ao
DATE_FORMAT()
função, exceto que a string de formato só pode conter especificadores de formato para horas, minutos e segundos. Requer dois argumentos; a hora e a string de formato.
Sintaxe
A sintaxe fica assim:
TIME_FORMAT(time,format)
Onde
time
é o valor de tempo e format
é a cadeia de formato. Consulte Strings de formato MariaDB para obter uma lista de especificadores de formato aceitáveis. Conforme mencionado, apenas os especificadores de formato para horas, minutos e segundos são aceitos. Todos os outros valores retornam null
. Exemplo
Aqui está um exemplo:
SELECT TIME_FORMAT('10:30:45', '%H %i %S');
Resultado:
+-------------------------------------+| TIME_FORMAT('10:30:45', '%H %i %S') |+----------------------------- --------+| 10 30 45 |+------------------------------------------------+
Aqui está novamente, mas desta vez fornecemos uma string de formato mais elaborada:
SELECT TIME_FORMAT(
'10:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultado:
+--------------------------------------+| Resultado |+-------------------------------------------------+| 10 horas, 30 minutos e 45 segundos |+-------------------------------------------------+
Horários maiores
TIME
os valores podem estar no intervalo '-838:59:59.999999'
para '838:59:59.999999'
. Portanto, a parte da hora pode ser muito maior que
23
:SELECT TIME_FORMAT(
'810:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultado:
+---------------------------------------+| Resultado |+---------------------------------------+| 810 horas, 30 minutos e 45 segundos |+-------------------------------------------------- +
Valores de tempo negativos
Aqui está um exemplo com um valor de tempo negativo:
SELECT TIME_FORMAT(
'-810:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultado:
+----------------------------------------+| Resultado |+----------------------------------------+| -810 horas, 30 minutos e 45 segundos |+------------------------------------------------- --+
Horários fora do intervalo
No entanto, fornecer um valor de tempo fora do intervalo retornará o limite superior desse intervalo, juntamente com um aviso:
SELECT TIME_FORMAT(
'910:30:45',
'%H hours, %i minutes, and %S seconds'
)
AS Result;
Resultado:
+---------------------------------------+| Resultado |+---------------------------------------+| 838 horas, 59 minutos e 59 segundos |+-------------------------------------------------- +1 linha no conjunto, 1 aviso (0,003 seg)
Vamos verificar o aviso:
SHOW WARNINGS;
Resultado:
+---------+------+----------------------------- ----------------+| Nível | Código | Mensagem |+---------+------+------------------- ---------------+| Aviso | 1292 | Valor de tempo incorreto truncado:'910:30:45' |+---------+------+------------------- ---------------+
Argumentos inválidos
Ao passar qualquer argumento inválido,
TIME_FORMAT()
retorna null
com um aviso:SELECT TIME_FORMAT('Homer', 'Simpson');
Resultado:
+---------------------------------+| TIME_FORMAT('Homer', 'Simpson') |+---------------------------------+| NULL |+---------------------------------+1 linha no conjunto, 1 aviso (0,009 seg)
Confira o aviso:
SHOW WARNINGS;
Resultado:
+---------+------+----------------------------- --+| Nível | Código | Mensagem |+---------+------+------------------- -+| Aviso | 1292 | Valor de tempo incorreto:'Homer' |+---------+------+------------------------ -------+String de formato inválido
A string de formato só pode conter especificadores de formato para horas, minutos e segundos. Qualquer outro especificador de formato resulta emnull
sendo devolvido:
SELECT TIME_FORMAT('10:30:45', '%M %W');
Resultado:
+----------------------------------+| TIME_FORMAT('10:30:45', '%M %W') |+------------------------------------------ ---+| NULL |+----------------------------------+Argumento ausente
ChamandoTIME_FORMAT()
com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT TIME_FORMAT();
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'TIME_FORMAT'
E outro exemplo:
SELECT TIME_FORMAT('10:09:10');
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'TIME_FORMAT'