In MariaDB, MAKETIME()
is een ingebouwde datum- en tijdfunctie die een tijdwaarde retourneert, gebaseerd op de uren, minuten en seconden die als argumenten worden opgegeven.
Syntaxis
De syntaxis gaat als volgt:
MAKETIME(hour,minute,second)
Voorbeeld
Hier is een voorbeeld:
SELECT MAKETIME(08, 30, 45);
Resultaat:
+----------------------+ | MAKETIME(08, 30, 45) | +----------------------+ | 08:30:45 | +----------------------+
En nog een:
SELECT MAKETIME(23, 8, 1);
Resultaat:
+--------------------+ | MAKETIME(23, 8, 1) | +--------------------+ | 23:08:01 | +--------------------+
Bereiken
Als het hour
argument valt buiten het bereik -838
tot 838
, wordt de waarde afgekapt met een waarschuwing.
Als de minute
of second
argumenten vallen buiten het bereik 0
tot 59
, het resultaat is null
, en er wordt een waarschuwing weergegeven (in de MariaDB-documentatie staat dat het bereik 0
is tot 60
, maar dit is niet het geval in mijn tests. Verder stelt de MariaDB-documentatie ook dat het bereik voor MariaDB-tijdwaarden '-838:59:59.999999'
is naar '838:59:59.999999'
).
Hoe dan ook, hier is een voorbeeld van een tijd met waarden die zich aan de bovenkant van hun geaccepteerde bereik bevinden:
SELECT MAKETIME(838, 59, 59.999999);
Resultaat:
+------------------------------+ | MAKETIME(838, 59, 59.999999) | +------------------------------+ | 838:59:59.999999 | +------------------------------+
Deze waarden waren nog steeds binnen hun geaccepteerde bereik, en dus kregen we een geldige tijdswaarde.
Ongeldige minuten en seconden
Dit is wat er gebeurt als we het geaccepteerde bereik voor de minute
overschrijden en second
argumenten:
SELECT
MAKETIME(00, 60, 00),
MAKETIME(00, 00, 60);
Resultaat:
+----------------------+----------------------+ | MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) | +----------------------+----------------------+ | NULL | NULL | +----------------------+----------------------+ 1 row in set, 1 warning (0.001 sec)
Het resultaat is null
voor beide, met een waarschuwing.
Laten we de waarschuwing eens bekijken:
SHOW WARNINGS;
Resultaat:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect seconds value: '60' | +---------+------+-----------------------------------------+
Ongeldige uren
Laten we nu eens kijken wat er gebeurt als we buiten het geaccepteerde bereik gaan voor het hour
argument:
SELECT MAKETIME(900, 00, 00);
Resultaat:
+-----------------------+ | MAKETIME(900, 00, 00) | +-----------------------+ | 838:59:59 | +-----------------------+ 1 row in set, 1 warning (0.000 sec)
In dit scenario wordt een tijdwaarde geretourneerd met uren, minuten en seconden afgekapt tot hun bovenste bereik. Er wordt ook een waarschuwing geretourneerd.
Laten we de waarschuwing eens bekijken:
SHOW WARNINGS;
Resultaat:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '900:00:00' | +---------+------+---------------------------------------------+
Ontbrekend argument
Bellen MAKETIME()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT MAKETIME();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
En nog een voorbeeld:
SELECT MAKETIME( 12, 1 );
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Maak een afspraakje
Zie ook SEC_TO_TIME()
voor het construeren van een datumwaarde van een aantal seconden.
Zie ook MAKEDATE()
voor het construeren van een datumwaarde van het jaar en de dag van het jaar.