No MariaDB,
TIME()
é uma função de data e hora integrada que extrai a parte de hora de uma determinada expressão de hora ou data e a retorna como uma string. Ele aceita um argumento, que é o valor de hora ou data e hora para o qual você deseja extrair a hora.
Sintaxe
A sintaxe fica assim:
TIME(expr)
Onde
expr
é a expressão de hora ou data e hora para a qual extrair a hora. Exemplo
Segue um exemplo para demonstrar:
SELECT TIME('2030-02-01 10:30:45');
Resultado:
+-----------------------------+ | TIME('2030-02-01 10:30:45') | +-----------------------------+ | 10:30:45 | +-----------------------------+
Valores de tempo
Aqui está um exemplo que extrai o tempo de um valor de tempo:
SELECT TIME('10:30:45');
Resultado:
+------------------+ | TIME('10:30:45') | +------------------+ | 10:30:45 | +------------------+
Microsegundos
Aqui está um exemplo que inclui microssegundos:
SELECT TIME('2030-02-01 10:30:45.123456');
Resultado:
+------------------------------------+ | TIME('2030-02-01 10:30:45.123456') | +------------------------------------+ | 10:30:45.123456 | +------------------------------------+
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('578:30:45');
Resultado:
+-------------------+ | TIME('578:30:45') | +-------------------+ | 578:30:45 | +-------------------+
Tempos negativos
Tempos negativos são válidos:
Exemplo
SELECT TIME('-578:30:45');
Resultado:
+--------------------+ | TIME('-578:30:45') | +--------------------+ | -578:30:45 | +--------------------+
Horários fora do intervalo
Valores de tempo fora do intervalo
'-838:59:59.999999'
para '838:59:59.999999'
são limitados no limite relevante e incluem um aviso. Exemplo:
SELECT TIME('978:30:45');
Resultado (usando saída vertical):
+-------------------+ | TIME('978:30:45') | +-------------------+ | 838:59:59 | +-------------------+ 1 row in set, 1 warning (0.003 sec)
Vamos verificar o aviso:
SHOW WARNINGS;
Resultado (usando saída vertical):
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '978:30:45' | +---------+------+---------------------------------------------+
Data atual
Podemos passar
NOW()
como argumento datetime para usar a hora atual:SELECT
NOW(),
TIME(NOW());
Resultado:
+---------------------+-------------+ | NOW() | TIME(NOW()) | +---------------------+-------------+ | 2021-05-27 10:24:23 | 10:24:23 | +---------------------+-------------+
Argumentos inválidos
Quando passado um argumento inválido,
TIME()
retorna null
com um aviso:SELECT TIME('Ten Thirty AM');
Resultado:
+-----------------------+ | TIME('Ten Thirty AM') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.002 sec)
Confira o aviso:
SHOW WARNINGS;
Resultado:
+---------+------+---------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------+ | Warning | 1292 | Incorrect time value: 'Ten Thirty AM' | +---------+------+---------------------------------------+
Argumento ausente
Chamando
TIME()
com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:SELECT TIME();
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
E outro exemplo:
SELECT TIME('10:30:45', '06:30:45');
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 ' '06:30:45')' at line 1