In MariaDB MAKETIME()
ist eine integrierte Datums- und Zeitfunktion, die einen Zeitwert basierend auf den als Argumente bereitgestellten Stunden, Minuten und Sekunden zurückgibt.
Syntax
Die Syntax sieht so aus:
MAKETIME(hour,minute,second)
Beispiel
Hier ist ein Beispiel:
SELECT MAKETIME(08, 30, 45);
Ergebnis:
+----------------------+ | MAKETIME(08, 30, 45) | +----------------------+ | 08:30:45 | +----------------------+
Und noch einer:
SELECT MAKETIME(23, 8, 1);
Ergebnis:
+--------------------+ | MAKETIME(23, 8, 1) | +--------------------+ | 23:08:01 | +--------------------+
Bereiche
Wenn die hour
Das Argument liegt außerhalb des Bereichs -838
bis 838
, wird der Wert mit einer Warnung abgeschnitten.
Wenn die minute
oder second
Argumente liegen außerhalb des Bereichs 0
bis 59
, ist das Ergebnis null
, und eine Warnung wird angezeigt (die MariaDB-Dokumentation gibt an, dass der Bereich 0
ist bis 60
, aber das ist in meinen Tests nicht der Fall. Darüber hinaus gibt die MariaDB-Dokumentation an, dass der Bereich für MariaDB-Zeitwerte '-838:59:59.999999'
ist zu '838:59:59.999999'
).
Wie auch immer, hier ist ein Beispiel für eine Zeit mit Werten, die am oberen Ende ihres akzeptierten Bereichs liegen:
SELECT MAKETIME(838, 59, 59.999999);
Ergebnis:
+------------------------------+ | MAKETIME(838, 59, 59.999999) | +------------------------------+ | 838:59:59.999999 | +------------------------------+
Diese Werte lagen immer noch innerhalb ihres zulässigen Bereichs, sodass wir einen gültigen Zeitwert erhalten haben.
Ungültige Minuten und Sekunden
Folgendes passiert, wenn wir den akzeptierten Bereich für die minute
überschreiten und second
Argumente:
SELECT
MAKETIME(00, 60, 00),
MAKETIME(00, 00, 60);
Ergebnis:
+----------------------+----------------------+ | MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) | +----------------------+----------------------+ | NULL | NULL | +----------------------+----------------------+ 1 row in set, 1 warning (0.001 sec)
Das Ergebnis ist null
für beide, mit einer Warnung.
Sehen wir uns die Warnung an:
SHOW WARNINGS;
Ergebnis:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect seconds value: '60' | +---------+------+-----------------------------------------+
Ungültige Öffnungszeiten
Sehen wir uns nun an, was passiert, wenn wir den akzeptierten Bereich für die hour
verlassen Argument:
SELECT MAKETIME(900, 00, 00);
Ergebnis:
+-----------------------+ | MAKETIME(900, 00, 00) | +-----------------------+ | 838:59:59 | +-----------------------+ 1 row in set, 1 warning (0.000 sec)
In diesem Szenario wird ein Zeitwert zurückgegeben, bei dem Stunden, Minuten und Sekunden auf den oberen Bereich begrenzt sind. Außerdem wird eine Warnung zurückgegeben.
Sehen wir uns die Warnung an:
SHOW WARNINGS;
Ergebnis:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '900:00:00' | +---------+------+---------------------------------------------+
Fehlendes Argument
Aufruf von MAKETIME()
mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT MAKETIME();
Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Und noch ein Beispiel:
SELECT MAKETIME( 12, 1 );
Ergebnis:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Verabrede dich
Siehe auch SEC_TO_TIME()
zum Konstruieren eines Datumswerts aus einer Anzahl von Sekunden.
Siehe auch MAKEDATE()
zum Konstruieren eines Datumswertes aus seinem Jahr und Tag des Jahres.