I MariaDB, MAKETIME()
er en indbygget dato- og tidsfunktion, der returnerer en tidsværdi baseret på timer, minutter og sekunder, der er angivet som argumenter.
Syntaks
Syntaksen ser sådan ud:
MAKETIME(hour,minute,second)
Eksempel
Her er et eksempel:
SELECT MAKETIME(08, 30, 45);
Resultat:
+----------------------+ | MAKETIME(08, 30, 45) | +----------------------+ | 08:30:45 | +----------------------+
Og endnu en:
SELECT MAKETIME(23, 8, 1);
Resultat:
+--------------------+ | MAKETIME(23, 8, 1) | +--------------------+ | 23:08:01 | +--------------------+
Område
Hvis hour
argumentet er uden for området -838
til 838
, er værdien afkortet med en advarsel.
Hvis minute
eller second
argumenter er uden for området 0
til 59
, resultatet er null
, og en advarsel vises (MariaDB-dokumentationen angiver, at området er 0
til 60
, men dette er ikke tilfældet i mine tests. MariaDB-dokumentationen angiver desuden, at området for MariaDB-tidsværdier er '-838:59:59.999999'
til '838:59:59.999999'
).
Uanset hvad, her er et eksempel på et tidspunkt med værdier, der er i den øvre ende af deres accepterede interval:
SELECT MAKETIME(838, 59, 59.999999);
Resultat:
+------------------------------+ | MAKETIME(838, 59, 59.999999) | +------------------------------+ | 838:59:59.999999 | +------------------------------+
Disse værdier var stadig inden for deres accepterede område, og vi fik derfor en gyldig tidsværdi.
Ugyldige minutter og sekunder
Her er, hvad der sker, når vi går over det accepterede interval for minute
og second
argumenter:
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 er null
for begge med en advarsel.
Lad os tjekke advarslen:
SHOW WARNINGS;
Resultat:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect seconds value: '60' | +---------+------+-----------------------------------------+
Ugyldige timer
Lad os nu se, hvad der sker, når vi går uden for det accepterede interval i 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 dette scenarie returneres en tidsværdi med timer, minutter og sekunder klippet til deres øvre område. En advarsel returneres også.
Lad os tjekke advarslen:
SHOW WARNINGS;
Resultat:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '900:00:00' | +---------+------+---------------------------------------------+
Manglende argument
Kalder MAKETIME()
med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
SELECT MAKETIME();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Og endnu et eksempel:
SELECT MAKETIME( 12, 1 );
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Lav en date
Se også SEC_TO_TIME()
til at konstruere en datoværdi ud fra et antal sekunder.
Se også MAKEDATE()
for at konstruere en datoværdi fra dens år og dag i året.