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

Como TIME_TO_SEC() funciona no MariaDB


No MariaDB, TIME_TO_SEC() é uma função interna de data e hora que retorna seu argumento de tempo, convertido em segundos.

Sintaxe


A sintaxe fica assim:
TIME_TO_SEC(time)

Onde time é o valor de tempo a ser convertido em segundos.

Exemplo


Aqui está um exemplo:
SELECT TIME_TO_SEC('00:01:00');

Resultado:
+-------------------------+
| TIME_TO_SEC('00:01:00') |
+-------------------------+
|                      60 |
+-------------------------+

Aqui está com alguns outros valores de tempo:
SELECT 
    TIME_TO_SEC('01:00:00'),
    TIME_TO_SEC('15:37:46');

Resultado:
+-------------------------+-------------------------+
| TIME_TO_SEC('01:00:00') | TIME_TO_SEC('15:37:46') |
+-------------------------+-------------------------+
|                    3600 |                   56266 |
+-------------------------+-------------------------+

Microsegundos


TIME_TO_SEC() suporta microssegundos:
SELECT TIME_TO_SEC('00:01:00.123456');

Resultado:
+--------------------------------+
| TIME_TO_SEC('00:01:00.123456') |
+--------------------------------+
|                      60.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_TO_SEC('838:59:59');

Resultado:
+--------------------------+
| TIME_TO_SEC('838:59:59') |
+--------------------------+
|                  3020399 |
+--------------------------+

Valores de tempo negativos


Aqui está um exemplo com um valor de tempo negativo:
SELECT TIME_TO_SEC('-820:38:15');

Resultado:
+---------------------------+
| TIME_TO_SEC('-820:38:15') |
+---------------------------+
|                  -2954295 |
+---------------------------+

Horários fora do intervalo


No entanto, fornecer um valor de tempo fora do intervalo retornará os segundos para o limite superior desse intervalo, juntamente com um aviso:
SELECT TIME_TO_SEC('920:38:15');

Resultado:
+--------------------------+
| TIME_TO_SEC('920:38:15') |
+--------------------------+
|                  3020399 |
+--------------------------+
1 row in set, 1 warning (0.002 sec)

Vamos verificar o aviso:
SHOW WARNINGS;

Resultado:
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '920:38:15' |
+---------+------+---------------------------------------------+

Argumento inválido


Ao passar qualquer argumento inválido, TIME_TO_SEC() retorna null com um aviso:
SELECT TIME_TO_SEC('Homer');

Resultado:
+----------------------+
| TIME_TO_SEC('Homer') |
+----------------------+
|                 NULL |
+----------------------+
1 row in set, 1 warning (0.000 sec)

Confira o aviso:
SHOW WARNINGS;

Resultado:
+---------+------+-------------------------------+
| Level   | Code | Message                       |
+---------+------+-------------------------------+
| Warning | 1292 | Incorrect time value: 'Homer' |
+---------+------+-------------------------------+

Argumento ausente


Chamando TIME_TO_SEC() com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT TIME_TO_SEC();

Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIME_TO_SEC'

E outro exemplo:
SELECT TIME_TO_SEC('10:09:10', 2);

Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIME_TO_SEC'