sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona TIME_TO_SEC() en MariaDB

En MariaDB, TIME_TO_SEC() es una función de fecha y hora incorporada que devuelve su argumento de tiempo, convertido a segundos.

Sintaxis

La sintaxis es así:

TIME_TO_SEC(time)

Donde time es el valor de tiempo que se convertirá a segundos.

Ejemplo

He aquí un ejemplo:

SELECT TIME_TO_SEC('00:01:00');

Resultado:

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

Aquí está con un par de otros valores de tiempo:

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() admite microsegundos:

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

Resultado:

+--------------------------------+
| TIME_TO_SEC('00:01:00.123456') |
+--------------------------------+
|                      60.123456 |
+--------------------------------+

Horarios más amplios

TIME los valores pueden estar en el rango '-838:59:59.999999' a '838:59:59.999999' .

Por lo tanto, la parte de la hora puede ser mucho mayor que 23 :

SELECT TIME_TO_SEC('838:59:59');

Resultado:

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

Valores de tiempo negativos

Aquí hay un ejemplo con un valor de tiempo negativo:

SELECT TIME_TO_SEC('-820:38:15');

Resultado:

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

Tiempos fuera de rango

Sin embargo, proporcionar un valor de tiempo fuera del rango devolverá los segundos para el límite superior de ese rango, junto con una advertencia:

SELECT TIME_TO_SEC('920:38:15');

Resultado:

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

Revisemos la advertencia:

SHOW WARNINGS;

Resultado:

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

Argumento no válido

Cuando se pasan argumentos no válidos, TIME_TO_SEC() devuelve null con una advertencia:

SELECT TIME_TO_SEC('Homer');

Resultado:

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

Compruebe la advertencia:

SHOW WARNINGS;

Resultado:

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

Argumento faltante

Llamando a TIME_TO_SEC() con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:

SELECT TIME_TO_SEC();

Resultado:

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

Y otro ejemplo:

SELECT TIME_TO_SEC('10:09:10', 2);

Resultado:

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