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

4 Funktionen zum Abrufen der Stunde aus einem Zeitwert in MariaDB

Nachfolgend finden Sie 4 Funktionen, mit denen Sie die Stunde aus einem Zeitwert in MariaDB zurückgeben können.

Die HOUR() Funktion

Die HOUR() Funktion gibt die Stunde für eine gegebene TIME zurück oder DATETIME Ausdruck. Es akzeptiert ein Argument, nämlich die Zeit, aus der Sie die Stunde extrahieren möchten.

Beispiel:

SELECT HOUR('03:45:30');

Ergebnis:

+------------------+
| HOUR('03:45:30') |
+------------------+
|                3 |
+------------------+

Für Tageszeitwerte gibt es die Stunde als Zahl im Bereich 0 zurück bis 23 . Allerdings ist der Bereich von TIME Werte können viel größer sein, und daher kann der zurückgegebene Wert viel höher als 23 sein . Insbesondere TIME Werte können im Bereich '-838:59:59.999999' liegen zu '838:59:59.999999' .

Hier ist ein Beispiel mit einem größeren Stundenteil:

SELECT HOUR('838:45:30');

Ergebnis:

+-------------------+
| HOUR('838:45:30') |
+-------------------+
|               838 |
+-------------------+

Wenn die Zeit außerhalb des akzeptierten Bereichs für TIME liegt Werten ist der Rückgabewert 838 mit einer Warnung.

TIME Werte können auch negativ sein. In solchen Fällen HOUR() gibt einen positiven Wert zurück.

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 Stunde (sowie andere Einheiten) aus dem Zeitwert zu extrahieren.

Beispiel:

SELECT EXTRACT(HOUR FROM '10:47:01');

Ergebnis:

+-------------------------------+
| EXTRACT(HOUR FROM '10:47:01') |
+-------------------------------+
|                            10 |
+-------------------------------+

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 daher diese Funktion verwenden, um die Stunde (sowie Minuten und Sekunden) von der Uhrzeit zurückzugeben. Es gibt verschiedene Möglichkeiten, die Stunde zurückzugeben.

Hier ist ein Beispiel, das die Stunde in verschiedenen Formen zurückgibt:

SELECT 
    TIME_FORMAT('18:45:30', '%H') AS '%H',
    TIME_FORMAT('18:45:30', '%h') AS '%h',
    TIME_FORMAT('18:45:30', '%I') AS '%I',
    TIME_FORMAT('18:45:30', '%k') AS '%k',
    TIME_FORMAT('18:45:30', '%l') AS '%l';

Ergebnis:

+------+------+------+------+------+
| %H   | %h   | %I   | %k   | %l   |
+------+------+------+------+------+
| 18   | 06   | 06   | 18   | 6    |
+------+------+------+------+------+

Hier ist eine Beschreibung jedes dieser Formatbezeichner:

Formatbezeichner Beschreibung
%H Stunde mit 2 Ziffern zwischen 00-23.
%h Stunde mit 2 Ziffern zwischen 01-12.
%I Stunde mit 2 Ziffern zwischen 01-12.
%k Stunde mit 1 Ziffern zwischen 0-23.
%l Stunde mit 1 Ziffern zwischen 1-12.

Das TIME_FORMAT() Die Funktion akzeptiert eine Teilmenge der Formatzeichenfolgen, die mit DATE_FORMAT() verwendet werden können Funktion. Siehe MariaDB-Formatzeichenfolgen für eine vollständige Liste von Formatzeichenfolgen/Bezeichnern, die mit DATE_FORMAT() verwendet werden können . Das TIME_FORMAT() -Funktion akzeptiert nur Formatbezeichner für Stunden, Minuten und Sekunden. 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 18:45:30', '%H') AS '%H',
    DATE_FORMAT('2023-01-01 18:45:30', '%h') AS '%h',
    DATE_FORMAT('2023-01-01 18:45:30', '%I') AS '%I',
    DATE_FORMAT('2023-01-01 18:45:30', '%k') AS '%k',
    DATE_FORMAT('2023-01-01 18:45:30', '%l') AS '%l';

Ergebnis:

+------+------+------+------+------+
| %H   | %h   | %I   | %k   | %l   |
+------+------+------+------+------+
| 18   | 06   | 06   | 18   | 6    |
+------+------+------+------+------+

Vergeht nur eine TIME value schneidet mit dieser Funktion nicht ganz ab:

SELECT 
    DATE_FORMAT('18:45:30', '%H') AS '%H',
    DATE_FORMAT('18:45:30', '%h') AS '%h',
    DATE_FORMAT('18:45:30', '%I') AS '%I',
    DATE_FORMAT('18:45:30', '%k') AS '%k',
    DATE_FORMAT('18:45:30', '%l') AS '%l';

Ergebnis:

+------+------+------+------+------+
| %H   | %h   | %I   | %k   | %l   |
+------+------+------+------+------+
| NULL | NULL | NULL | NULL | NULL |
+------+------+------+------+------+
1 row in set, 5 warnings (0.000 sec)

Warnungen anzeigen:

SHOW WARNINGS;

Ergebnis:

+---------+------+--------------------------------------+
| Level   | Code | Message                              |
+---------+------+--------------------------------------+
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
+---------+------+--------------------------------------+