V MariaDB, MAKETIME()
je vestavěná funkce data a času, která vrací hodnotu času na základě hodin, minut a sekund poskytnutých jako argumenty.
Syntaxe
Syntaxe vypadá takto:
MAKETIME(hour,minute,second)
Příklad
Zde je příklad:
SELECT MAKETIME(08, 30, 45);
Výsledek:
+----------------------+ | MAKETIME(08, 30, 45) | +----------------------+ | 08:30:45 | +----------------------+
A další:
SELECT MAKETIME(23, 8, 1);
Výsledek:
+--------------------+ | MAKETIME(23, 8, 1) | +--------------------+ | 23:08:01 | +--------------------+
Rozsahy
Pokud je hour
argument je mimo rozsah -838
na 838
, hodnota je zkrácena s varováním.
Pokud minute
nebo second
argumenty jsou mimo rozsah 0
až 59
, výsledkem je null
a zobrazí se varování (dokumentace MariaDB uvádí, že rozsah je 0
na 60
, ale v mých testech to tak není. Dále dokumentace MariaDB také uvádí, že rozsah časových hodnot MariaDB je '-838:59:59.999999'
na '838:59:59.999999'
).
Každopádně zde je příklad času s hodnotami, které jsou na horní hranici jejich přijatelného rozsahu:
SELECT MAKETIME(838, 59, 59.999999);
Výsledek:
+------------------------------+ | MAKETIME(838, 59, 59.999999) | +------------------------------+ | 838:59:59.999999 | +------------------------------+
Tyto hodnoty byly stále v přijatelném rozsahu, a tak jsme získali platnou časovou hodnotu.
Neplatné minuty a sekundy
Zde je to, co se stane, když překročíme povolený rozsah na minute
a second
argumenty:
SELECT
MAKETIME(00, 60, 00),
MAKETIME(00, 00, 60);
Výsledek:
+----------------------+----------------------+ | MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) | +----------------------+----------------------+ | NULL | NULL | +----------------------+----------------------+ 1 row in set, 1 warning (0.001 sec)
Výsledek je null
pro oba s varováním.
Podívejme se na varování:
SHOW WARNINGS;
Výsledek:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect seconds value: '60' | +---------+------+-----------------------------------------+
Neplatná otevírací doba
Nyní se podívejme, co se stane, když na hour
překročíme povolený rozsah argument:
SELECT MAKETIME(900, 00, 00);
Výsledek:
+-----------------------+ | MAKETIME(900, 00, 00) | +-----------------------+ | 838:59:59 | +-----------------------+ 1 row in set, 1 warning (0.000 sec)
V tomto scénáři je vrácena časová hodnota s hodinami, minutami a sekundami oříznutými na horní rozsah. Také se vrátí varování.
Podívejme se na varování:
SHOW WARNINGS;
Výsledek:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '900:00:00' | +---------+------+---------------------------------------------+
Chybí argument
Volání MAKETIME()
s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:
SELECT MAKETIME();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
A další příklad:
SELECT MAKETIME( 12, 1 );
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Udělejte si rande
Viz také SEC_TO_TIME()
pro konstrukci hodnoty data z počtu sekund.
Viz také MAKEDATE()
pro vytvoření hodnoty data z roku a dne v roce.