In MySQL können Sie SUBTIME()
verwenden Funktion zum Subtrahieren eines Zeitwerts von einem Zeit- oder Datumszeitausdruck.
So funktioniert es, Sie geben zwei Argumente an; der erste ist ein Zeit- oder Datumszeitwert und der zweite ein Zeitwert. Die SUBTIME()
Die Funktion subtrahiert dann das zweite Argument vom ersten und gibt das Ergebnis zurück.
Syntax
Die Syntax lautet wie folgt:
SUBTIME(expr1,expr2)
Wobei expr1
kann entweder ein Zeit- oder ein Datumzeit-Ausdruck sein, und expr2
ist ein Zeitausdruck.
Und so expr2
wird von expr1
subtrahiert .
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel zur Veranschaulichung.
SELECT SUBTIME('12:35:00', '1:30');
Ergebnis:
+-------------------------------------+| SUBTIME('12:35:00', '1:30') |+--------------------------------------+| 11:05:00 |+------------------------------------+
Beispiel 2 – Sekunden subtrahieren
In diesem Beispiel ziehe ich auch eine Anzahl von Sekunden vom Zeitwert ab.
SELECT SUBTIME('12:35:00', '1:30:30');
Ergebnis:
+-------------------------------+| UNTERZEIT('12:35:00', '1:30:30') |+------------------------------ --+| 11:04:30 |+-------------------------------+
Und wir erhalten das gleiche Ergebnis, selbst wenn wir den Sekundenteil aus dem anfänglichen Zeitargument weglassen.
SELECT SUBTIME('12:35', '1:30:30');
Ergebnis:
+-------------------------------------+| SUBTIME('12:35', '1:30:30') |+--------------------------------------+| 11:04:30 |+------------------------------------+
Beispiel 3 – Sekundenbruchteile
Sie können auch die Sekundenbruchteile abziehen.
SELECT SUBTIME('12:35:00.888888', '1:30:30.555555');
Ergebnis:
Beispiel 4 – Negative Ergebnisse
Es ist durchaus zulässig, am Ende einen negativen Wert für Ihr Ergebnis zu erhalten.
SELECT SUBTIME('12:35:00', '20:30:30');
Ergebnis:
+---------------------------------+| UNTERZEIT('12:35:00', '20:30:30') |+------------------------------ ---+| -07:55:30 |+---------------------------------------------+
Beispiel 5 – Von einem Datetime-Wert subtrahieren
In diesem Beispiel subtrahiere ich von einem datetime-Wert (im Gegensatz zu nur einem Zeitwert wie in den vorherigen Beispielen).
SELECT SUBTIME('2021-01-01 12:35:00', '1:30:30');
Ergebnis:
+--------------------------------------------------+| SUBTIME('2021-01-01 12:35:00', '1:30:30') |+-------------------- ------------------+| 01.01.2021 11:04:30 |+-------------------------------------------------- -----+
In diesem Fall blieb der Datumsteil unverändert, da das zweite Argument nicht groß genug war, um es zu beeinflussen.
In diesem nächsten Beispiel erhöhe ich das zweite Argument, sodass es groß genug ist, um den Datumsteil zu beeinflussen.
SELECT SUBTIME('2021-01-01 12:35:00', '100:30:30');
Ergebnis:
+---------------------------------------------+ | SUBTIME('2021-01-01 12:35:00', '100:30:30') |+-------------------- --------------------+| 2020-12-28 08:04:30 |+--------------------------------------------------- -------+
Wie in diesem Beispiel zu sehen ist, sind Zeitwerte nicht auf weniger als 24 Stunden beschränkt (sie können von -838:59:59 reichen zu 838:59:59 .
Sie können jedoch auch Folgendes tun:
SELECT SUBTIME('2021-01-01 12:35:00', '4 4:30:30');
Ergebnis:
+---------------------------------------------+ | SUBTIME('2021-01-01 12:35:00', '4 4:30:30') |+------------------------ ---------------------+| 2020-12-28 08:04:30 |+--------------------------------------------------- -------+
Beispiel 6 – Einschränkungen des Zeitwerts
Wie bereits erwähnt, kann der Zeitdatentyp von -838:59:59 reichen zu 838:59:59 . Das bedeutet, dass Sie nicht mehr abziehen können. Das bedeutet auch, dass das Ergebnis nicht außerhalb dieses Bereichs liegen darf. Folgendes ist beispielsweise nicht möglich:
SELECT SUBTIME('12:35:00', '20000000:30:30');
Ergebnis:
+--------------------------+| UNTERZEIT('12:35:00', '20000000:30:30') |+------------------------------ ---------+| -826:24:59 |+--------------------------------------------------+1 Zeile im Satz, 1 Warnung (0,01 Sek.)
Das Ergebnis ist komplett falsch und MySQL zeigt eine Warnung an.
Aber es ist nicht nur das zweite Argument, auf das Sie achten müssen. Sie werden auch auf das gleiche Problem stoßen, wenn das erste Argument anfänglich ein negativer Wert ist:
SELECT SUBTIME('-800:35:00', '50:30:30');
Ergebnis:
+-----------------------------------+| UNTERZEIT('-800:35:00', '50:30:30') |+------------------------------------ ------+| -838:59:59 |+-----------------------------------+1 Reihe im Satz, 1 Warnung (0.00 Sek.)