MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment TIME_TO_SEC() fonctionne dans MariaDB

Dans MariaDB, TIME_TO_SEC() est une fonction de date et d'heure intégrée qui renvoie son argument d'heure, converti en secondes.

Syntaxe

La syntaxe ressemble à ceci :

TIME_TO_SEC(time)

time est la valeur de temps à convertir en secondes.

Exemple

Voici un exemple :

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

Résultat :

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

Le voici avec quelques autres valeurs de temps :

SELECT 
    TIME_TO_SEC('01:00:00'),
    TIME_TO_SEC('15:37:46');

Résultat :

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

Microsecondes

TIME_TO_SEC() prend en charge les microsecondes :

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

Résultat :

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

Heures plus longues

TIME les valeurs peuvent être comprises dans la plage '-838:59:59.999999' à '838:59:59.999999' .

Par conséquent, la portion horaire peut être bien supérieure à 23 :

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

Résultat :

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

Valeurs de temps négatives

Voici un exemple avec une valeur de temps négative :

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

Résultat :

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

Heures hors plage

Cependant, fournir une valeur de temps en dehors de la plage renverra les secondes pour la limite supérieure de cette plage, ainsi qu'un avertissement :

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

Résultat :

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

Vérifions l'avertissement :

SHOW WARNINGS;

Résultat :

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

Argument invalide

Lorsqu'un argument invalide est passé, TIME_TO_SEC() renvoie null avec un avertissement :

SELECT TIME_TO_SEC('Homer');

Résultat :

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

Vérifiez l'avertissement :

SHOW WARNINGS;

Résultat :

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

Argument manquant

Appel de TIME_TO_SEC() avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :

SELECT TIME_TO_SEC();

Résultat :

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

Et un autre exemple :

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

Résultat :

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