MariaDB má HOUR()
funkce, která extrahuje hodinovou část z časové hodnoty. MariaDB má také EXTRACT()
funkce, která také dokáže extrahovat hodinovou část z časové hodnoty.
Tyto funkce však ne vždy vrátí stejný výsledek.
Čtěte dále, abyste viděli rozdíl mezi HOUR()
a EXTRACT(HOUR FROM ...)
v MariaDB.
Rozdíl
HOUR()
a EXTRACT(HOUR FROM ...)
oba vrátí stejnou hodnotu, když je časový výraz výrazem denní doby. To znamená, že pokud je hodinová část mezi 0
a 23
, pak vrátí stejný výsledek.
Rozdíl se projeví, když je hodinová část větší než 23
.
TIME
hodnoty mohou být v rozsahu '-838:59:59.999999'
na '838:59:59.999999'
, ale hodnota denní doby může být pouze mezi 0
a 23
.
Pokud je časový výraz mimo 0
a 23
rozsah:
HOUR()
vrátí skutečnou část hodiny z výrazu (pokud je v rozsahu'-838:59:59.999999'
na'838:59:59.999999'
– pokud je mimo tento rozsah, vrátí838
)EXTRACT(HOUR FROM ...)
vrátí hodnotu mezi0
a23
. Pokud je hodina mimo tento rozsah,EXTRACT()
bude iterovat přes0
a23
tolikrát, kolikrát je potřeba, aby se vrátila hodnota mezi0
a23
.
Příklad
Zde je příklad k demonstraci.
SELECT
HOUR('24:00:00'),
EXTRACT(HOUR FROM '24:00:00');
Výsledek:
+------------------+-------------------------------+ | HOUR('24:00:00') | EXTRACT(HOUR FROM '24:00:00') | +------------------+-------------------------------+ | 24 | 0 | +------------------+-------------------------------+
HOUR()
funkce vrací skutečnou hodinu, která byla poskytnuta, zatímco EXTRACT()
vrátí 0
. Důvodem je 24
je vyšší než 23
, což je nejvyšší hodnota EXTRACT()
se vrátí na hodinovou část. V tomto případě EXTRACT()
spustí počítání znovu, počínaje 0
.
Bude to dělat tolikrát, kolikrát bude potřeba, takže výsledek bude vždy mezi 0
a 23
.
Zde je další příklad s mnohem větší hodinovou částí:
SELECT
HOUR('742:00:00'),
EXTRACT(HOUR FROM '742:00:00');
Výsledek:
+-------------------+--------------------------------+ | HOUR('742:00:00') | EXTRACT(HOUR FROM '742:00:00') | +-------------------+--------------------------------+ | 742 | 22 | +-------------------+--------------------------------+