MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona TIME_TO_SEC() in MariaDB

In MariaDB, TIME_TO_SEC() è una funzione di data e ora incorporata che restituisce l'argomento relativo all'ora, convertito in secondi.

Sintassi

La sintassi è questa:

TIME_TO_SEC(time)

Dove time è il valore del tempo da convertire in secondi.

Esempio

Ecco un esempio:

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

Risultato:

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

Eccolo con un paio di altri valori temporali:

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

Risultato:

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

Microsecondi

TIME_TO_SEC() supporta microsecondi:

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

Risultato:

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

Orari più grandi

TIME i valori possono essere compresi nell'intervallo '-838:59:59.999999' a '838:59:59.999999' .

Pertanto, la parte dell'ora può essere molto più alta di 23 :

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

Risultato:

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

Valori temporali negativi

Ecco un esempio con un valore temporale negativo:

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

Risultato:

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

Tempi fuori portata

Tuttavia, fornendo un valore di tempo al di fuori dell'intervallo restituirà i secondi per il limite superiore di tale intervallo, insieme a un avviso:

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

Risultato:

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

Controlliamo l'avviso:

SHOW WARNINGS;

Risultato:

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

Argomento non valido

Quando vengono passati argomenti non validi, TIME_TO_SEC() restituisce null con un avviso:

SELECT TIME_TO_SEC('Homer');

Risultato:

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

Controlla l'avviso:

SHOW WARNINGS;

Risultato:

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

Argomento mancante

Chiamando TIME_TO_SEC() con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:

SELECT TIME_TO_SEC();

Risultato:

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

E un altro esempio:

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

Risultato:

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