MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como TIME() funciona no MariaDB


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