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

4 Möglichkeiten, Stunden, Minuten und Sekunden von einem Zeitwert in MariaDB zu trennen

MariaDB verfügt über mehrere Funktionen, mit denen Sie verschiedene Datums- und Zeitteile aus Datums-/Zeitwerten extrahieren können. Sie können diese verwenden, um bei Bedarf jede Datums-/Uhrzeitkomponente in eine eigene Spalte zu unterteilen.

Im Folgenden finden Sie vier Möglichkeiten, die Stunden, Minuten und Sekunden aus einem Zeitwert in MariaDB zu extrahieren. Als Bonus fügen wir auch Mikrosekunden hinzu.

Die HOUR() , MINUTE() , SECOND() und MICROSECOND() Funktionen

Die HOUR() , MINUTE() , und SECOND() Funktionen extrahieren die Stunden, Minuten und Sekunden aus einem Datums- bzw. Datetime-Wert.

Und wenn Sie mit höherer Genauigkeit arbeiten, können Sie MICROSECOND() verwenden Funktion, um den Mikrosekundenteil zurückzugeben.

Hier ist ein Beispiel für die Verwendung dieser Funktionen, um jede Zeitkomponente in einer eigenen Spalte zurückzugeben:

SELECT 
    HOUR('10:45:30.123456') AS "Hours",
    MINUTE('10:45:30.123456') AS "Minutes",
    SECOND('10:45:30.123456') AS "Seconds",
    MICROSECOND('10:45:30.123456') AS "Microseconds"; 

Ergebnis:

+-------+---------+---------+--------------+| Stunden | Minuten | Sekunden | Mikrosekunden |+-------+---------+---------+--------------+| 10 | 45 | 30 | 123456 |+-------+---------+---------+--------------+

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

TIME Werte können auch negativ sein. In solchen Fällen sind die Rückgabewerte immer noch positiv.

Hier ist ein negativer Zeitwert:

SELECT 
    HOUR('-10:45:30.123456') AS "Hours",
    MINUTE('-10:45:30.123456') AS "Minutes",
    SECOND('-10:45:30.123456') AS "Seconds",
    MICROSECOND('-10:45:30.123456') AS "Microseconds"; 

Ergebnis:

+-------+---------+---------+--------------+| Stunden | Minuten | Sekunden | Mikrosekunden |+-------+---------+---------+--------------+| 10 | 45 | 30 | 123456 |+-------+---------+---------+--------------+

Der EXTRACT() Funktion

Der EXTRACT() Mit der Funktion können Sie eine bestimmte Einheit aus dem Datums-/Uhrzeitwert extrahieren. Daher können Sie es verwenden, um die Stunden, Minuten, Sekunden und Mikrosekunden aus dem Zeitwert zu extrahieren.

Beispiel:

SELECT 
    EXTRACT(HOUR FROM '10:45:30.123456') AS "Hours",
    EXTRACT(MINUTE FROM '10:45:30.123456') AS "Minutes",
    EXTRACT(SECOND FROM '10:45:30.123456') AS "Seconds",
    EXTRACT(MICROSECOND FROM '10:45:30.123456') AS "Microseconds"; 

Ergebnis:

+-------+---------+---------+--------------+| Stunden | Minuten | Sekunden | Mikrosekunden |+-------+---------+---------+--------------+| 10 | 45 | 30 | 123456 |+-------+---------+---------+--------------+

Der TIME_FORMAT() Funktion

Das TIME_FORMAT() Mit der Funktion können Sie einen Zeitwert basierend auf einer Formatzeichenfolge formatieren. Der Formatstring gibt an, wie die Uhrzeit formatiert werden soll.

Sie können diese Funktion also verwenden, um die verschiedenen Zeitabschnitte separat zurückzugeben.

Beispiel:

SELECT 
    TIME_FORMAT('10:07:30.123456', '%H') AS "Hours",
    TIME_FORMAT('10:07:30.123456', '%i') AS "Minutes",
    TIME_FORMAT('10:07:30.123456', '%s') AS "Seconds",
    TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds"; 

Ergebnis:

+-------+---------+---------+--------------+| Stunden | Minuten | Sekunden | Mikrosekunden |+-------+---------+---------+--------------+| 10 | 07 | 30 | 123456 |+-------+---------+---------+--------------+

Es ist auch möglich, alle Zeitkomponenten separat zurückzugeben, jedoch in derselben Spalte.

Hier ist ein Beispiel dafür, was ich meine:

SELECT TIME_FORMAT('10:07:30.123456', '%H %i %s %f'); 

Ergebnis:

+---------------------------------------------- -+| TIME_FORMAT('10:07:30.123456', '%H %i %s %f') |+-------------------------- --------------------+| 10 07 30 123456 |+------------------------------------------- ---+

Das TIME_FORMAT() Die Funktion akzeptiert eine Teilmenge der Formatzeichenfolgen, die mit DATE_FORMAT() verwendet werden können Funktion.

Es gibt mehrere mögliche Formatbezeichner für den Stundenteil. Der oben verwendete Formatbezeichner gibt die Stunde mit zwei Ziffern zwischen 00 zurück und 23 . Siehe MariaDB-Formatzeichenfolgen für eine vollständige Liste von Formatzeichenfolgen/Bezeichnern, die mit DATE_FORMAT() verwendet werden können . Das TIME_FORMAT() Die Funktion akzeptiert nur Formatbezeichner für Stunden, Minuten und Sekunden/Teilsekunden. Jeder andere Formatbezeichner führt zu null oder 0 zurückgegeben.

Das DATE_FORMAT() Funktion

Das DATE_FORMAT() Mit der Funktion können Sie einen Datums- oder Datumszeitwert basierend auf einer Formatzeichenfolge formatieren. Der Formatstring gibt an, wie das Datum/die Uhrzeit formatiert werden soll.

Wir können daher dieselben Formatbezeichner verwenden, die wir mit TIME_FORMAT() verwendet haben Funktion im vorherigen Beispiel. Jedoch DATE_FORMAT() akzeptiert keine TIME Wert, also müssen wir ein DATETIME übergeben Wert.

SELECT 
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%H') AS "Hours",
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%i') AS "Minutes",
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%s') AS "Seconds",
    DATE_FORMAT('2023-01-01 10:07:30.123456', '%f') AS "Microseconds"; 

Ergebnis:

+-------+---------+---------+--------------+| Stunden | Minuten | Sekunden | Mikrosekunden |+-------+---------+---------+--------------+| 10 | 07 | 30 | 123456 |+-------+---------+---------+--------------+

Vergeht nur eine TIME Wert funktioniert nicht mit dieser Funktion:

SELECT 
    DATE_FORMAT('10:07:30.123456', '%H') AS "Hours",
    DATE_FORMAT('10:07:30.123456', '%i') AS "Minutes",
    DATE_FORMAT('10:07:30.123456', '%s') AS "Seconds",
    DATE_FORMAT('10:07:30.123456', '%f') AS "Microseconds"; 

Ergebnis:

+-------+---------+---------+--------------+| Stunden | Minuten | Sekunden | Mikrosekunden |+-------+---------+---------+--------------+| NULL | NULL | NULL | NULL |+-------+---------+---------+--------------+1 Zeile im Satz , 4 Warnungen (0,003 Sek.)

Sehen wir uns die Warnung an:

SHOW WARNINGS; 

Ergebnis:

+---------+------+------------------------------------- ----------------+| Ebene | Code | Nachricht |+---------+------+------------------------------ ---------------+| Warnung | 1292 | Falscher datetime-Wert:'10:07:30.123456' || Warnung | 1292 | Falscher datetime-Wert:'10:07:30.123456' || Warnung | 1292 | Falscher datetime-Wert:'10:07:30.123456' || Warnung | 1292 | Falscher datetime-Wert:'10:07:30.123456' |+---------+------+-------------------- -------------------------+