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

Wie MAKETIME() in MariaDB funktioniert

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.