sql >> Databáze >  >> RDS >> MariaDB

Jak MAKETIME() funguje v MariaDB

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 059 , 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.


  1. PDO::__construct():Server odeslal znakovou sadu (255) neznámou klientovi. Prosím, nahlaste to vývojářům

  2. Jak zjistit čas provádění dotazu v Oracle SQL Developer?

  3. psycopg2:vložte více řádků jedním dotazem

  4. Skládání zásobníku – Zjednodušte nasazení kontejnerů MySQL v Dockeru