I MariaDB, MAKETIME()
är en inbyggd datum- och tidsfunktion som returnerar ett tidsvärde, baserat på timmar, minuter och sekunder som anges som argument.
Syntax
Syntaxen ser ut så här:
MAKETIME(hour,minute,second)
Exempel
Här är ett exempel:
SELECT MAKETIME(08, 30, 45);
Resultat:
+----------------------+ | MAKETIME(08, 30, 45) | +----------------------+ | 08:30:45 | +----------------------+
Och en till:
SELECT MAKETIME(23, 8, 1);
Resultat:
+--------------------+ | MAKETIME(23, 8, 1) | +--------------------+ | 23:08:01 | +--------------------+
Områden
Om hour
argumentet är utanför intervallet -838
till 838
, trunkeras värdet med en varning.
Om minute
eller second
argumenten ligger utanför intervallet 0
till 59
, resultatet är null
, och en varning visas (MariaDB-dokumentationen anger att intervallet är 0
till 60
, men detta är inte fallet i mina tester. MariaDB-dokumentationen anger vidare att intervallet för MariaDB-tidsvärden är '-838:59:59.999999'
till '838:59:59.999999'
).
Hur som helst, här är ett exempel på en tid med värden som ligger i den övre delen av det accepterade intervallet:
SELECT MAKETIME(838, 59, 59.999999);
Resultat:
+------------------------------+ | MAKETIME(838, 59, 59.999999) | +------------------------------+ | 838:59:59.999999 | +------------------------------+
Dessa värden låg fortfarande inom det godkända intervallet, så vi fick ett giltigt tidsvärde.
Ogiltiga minuter och sekunder
Här är vad som händer när vi går över det accepterade intervallet för minute
och second
argument:
SELECT
MAKETIME(00, 60, 00),
MAKETIME(00, 00, 60);
Resultat:
+----------------------+----------------------+ | MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) | +----------------------+----------------------+ | NULL | NULL | +----------------------+----------------------+ 1 row in set, 1 warning (0.001 sec)
Resultatet är null
för båda, med en varning.
Låt oss kolla varningen:
SHOW WARNINGS;
Resultat:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect seconds value: '60' | +---------+------+-----------------------------------------+
Ogiltiga timmar
Låt oss nu se vad som händer när vi går utanför det accepterade intervallet under hour
argument:
SELECT MAKETIME(900, 00, 00);
Resultat:
+-----------------------+ | MAKETIME(900, 00, 00) | +-----------------------+ | 838:59:59 | +-----------------------+ 1 row in set, 1 warning (0.000 sec)
I det här scenariot returneras ett tidsvärde med timmar, minuter och sekunder klippta till deras övre intervall. En varning returneras också.
Låt oss kolla varningen:
SHOW WARNINGS;
Resultat:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '900:00:00' | +---------+------+---------------------------------------------+
Argument saknas
Anropar MAKETIME()
med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
SELECT MAKETIME();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Och ett annat exempel:
SELECT MAKETIME( 12, 1 );
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Skapa ett datum
Se även SEC_TO_TIME()
för att konstruera ett datumvärde från ett antal sekunder.
Se även MAKEDATE()
för att konstruera ett datumvärde från dess år och dag på året.