MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie TIME_TO_SEC() in MariaDB funktioniert

In MariaDB TIME_TO_SEC() ist eine eingebaute Datums- und Zeitfunktion, die ihr Zeitargument zurückgibt, konvertiert in Sekunden.

Syntax

Die Syntax lautet wie folgt:

TIME_TO_SEC(time)

Wo time ist der in Sekunden umzurechnende Zeitwert.

Beispiel

Hier ist ein Beispiel:

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

Ergebnis:

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

Hier ist es mit ein paar anderen Zeitwerten:

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

Ergebnis:

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

Mikrosekunden

TIME_TO_SEC() unterstützt Mikrosekunden:

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

Ergebnis:

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

Größere Öffnungszeiten

TIME Werte können im Bereich '-838:59:59.999999' liegen zu '838:59:59.999999' .

Daher kann der Stundenanteil viel höher als 23 sein :

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

Ergebnis:

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

Negative Zeitwerte

Hier ist ein Beispiel mit einem negativen Zeitwert:

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

Ergebnis:

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

Zeiten außerhalb des Bereichs

Wenn Sie jedoch einen Zeitwert außerhalb des Bereichs angeben, werden die Sekunden für die obere Grenze dieses Bereichs zurückgegeben, zusammen mit einer Warnung:

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

Ergebnis:

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

Sehen wir uns die Warnung an:

SHOW WARNINGS;

Ergebnis:

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

Ungültiges Argument

Wenn ungültige Argumente übergeben werden, TIME_TO_SEC() gibt null zurück mit einer Warnung:

SELECT TIME_TO_SEC('Homer');

Ergebnis:

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

Überprüfen Sie die Warnung:

SHOW WARNINGS;

Ergebnis:

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

Fehlendes Argument

Aufruf von TIME_TO_SEC() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT TIME_TO_SEC();

Ergebnis:

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

Und noch ein Beispiel:

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

Ergebnis:

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