sql >> Database >  >> RDS >> MariaDB

Hoe TIME_TO_SEC() werkt in MariaDB

In MariaDB, TIME_TO_SEC() is een ingebouwde datum- en tijdfunctie die het tijdargument teruggeeft, geconverteerd naar seconden.

Syntaxis

De syntaxis gaat als volgt:

TIME_TO_SEC(time)

Waar time is de tijdwaarde die moet worden geconverteerd naar seconden.

Voorbeeld

Hier is een voorbeeld:

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

Resultaat:

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

Hier is het met een paar andere tijdwaarden:

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

Resultaat:

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

Microseconden

TIME_TO_SEC() ondersteunt microseconden:

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

Resultaat:

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

Grotere uren

TIME waarden kunnen in het bereik liggen '-838:59:59.999999' naar '838:59:59.999999' .

Daarom kan het uurgedeelte veel hoger zijn dan 23 :

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

Resultaat:

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

Negatieve tijdwaarden

Hier is een voorbeeld met een negatieve tijdwaarde:

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

Resultaat:

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

Tijden buiten bereik

Als u echter een tijdwaarde buiten het bereik opgeeft, worden de seconden voor de bovengrens van dat bereik geretourneerd, samen met een waarschuwing:

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

Resultaat:

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

Laten we de waarschuwing eens bekijken:

SHOW WARNINGS;

Resultaat:

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

Ongeldig argument

Bij het doorgeven van ongeldige argumenten, TIME_TO_SEC() retourneert null met een waarschuwing:

SELECT TIME_TO_SEC('Homer');

Resultaat:

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

Controleer de waarschuwing:

SHOW WARNINGS;

Resultaat:

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

Ontbrekend argument

Bellen TIME_TO_SEC() met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:

SELECT TIME_TO_SEC();

Resultaat:

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

En nog een voorbeeld:

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

Resultaat:

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

  1. Hoe voeg ik een nieuwe kolom toe aan een tabel na de 2e of 3e kolom in de tabel met behulp van postgres?

  2. Hoe de Alter Table-instructie in SQL te gebruiken?

  3. Oorzaken van MySQL-fout 2014 Kan geen query's uitvoeren terwijl andere niet-gebufferde query's actief zijn

  4. Converteer timestamp datatype naar unix timestamp Oracle