Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SUBTIME() Beispiele – MySQL

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:

+---------------------------------------------- +| UNTERZEIT('12:35:00.888888', '1:30:30.555555') |+------------------------------ ----------------+| 11:04:30.333333 |+--------------------------------------------------- ---+

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.)