Níže jsou uvedeny 4 funkce, které vám umožňují vrátit hodinu z časové hodnoty v MariaDB.
HOUR() Funkce
HOUR() funkce vrací hodinu pro daný TIME nebo DATETIME výraz. Přijímá jeden argument, což je čas, ze kterého chcete extrahovat hodinu.
Příklad:
SELECT HOUR('03:45:30'); Výsledek:
+-------------------+| HODINA('03:45:30') |+------------------+| 3 |+------------------+
Pro hodnoty denní doby vrátí hodinu jako číslo v rozsahu 0 do 23 . Nicméně rozsah TIME hodnoty mohou být mnohem větší, a proto vrácená hodnota může být mnohem vyšší než 23 . Konkrétně TIME hodnoty mohou být v rozsahu '-838:59:59.999999' na '838:59:59.999999' .
Zde je příklad s větší hodinovou částí:
SELECT HOUR('838:45:30'); Výsledek:
+-------------------+| HODINA('838:45:30') |+-------------------+| 838 |+-------------------+
Pokud je čas mimo povolený rozsah pro TIME hodnoty, návratová hodnota je 838 s varováním.
TIME hodnoty mohou být i záporné. V takových případech HOUR() vrátí kladnou hodnotu.
EXTRACT() Funkce
EXTRACT() Funkce umožňuje extrahovat zadanou jednotku z hodnoty data/času. Proto jej můžete použít k extrakci hodiny (stejně jako jiných jednotek) z časové hodnoty.
Příklad:
SELECT EXTRACT(HOUR FROM '10:47:01'); Výsledek:
+-------------------------------+| EXTRAKT (HODINA OD '10:47:01') |+-------------------------------+| 10 |+-------------------------------+
TIME_FORMAT() Funkce
TIME_FORMAT() Funkce umožňuje formátovat časovou hodnotu na základě formátovacího řetězce. Formátovací řetězec určuje, jak má být formátován čas.
Pomocí této funkce tedy můžete vrátit hodinu (stejně jako minuty a sekundy) z času. Existují různé možnosti pro vrácení hodiny.
Zde je příklad, který vrací hodinu v různých formách:
SELECT
TIME_FORMAT('18:45:30', '%H') AS '%H',
TIME_FORMAT('18:45:30', '%h') AS '%h',
TIME_FORMAT('18:45:30', '%I') AS '%I',
TIME_FORMAT('18:45:30', '%k') AS '%k',
TIME_FORMAT('18:45:30', '%l') AS '%l'; Výsledek:
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| 18 | 06 | 06 | 18 | 6 |+------+------+------+------+------+
Zde je popis každého z těchto specifikátorů formátu:
| Specifikátor formátu | Popis |
|---|---|
%H | Hodina se 2 číslicemi mezi 00-23. |
%h | Hodina se 2 číslicemi mezi 01-12. |
%I | Hodina se 2 číslicemi mezi 01-12. |
%k | Hodina s 1 číslicí mezi 0-23. |
%l | Hodina s 1 číslicí mezi 1-12. |
TIME_FORMAT() funkce přijímá podmnožinu formátovacích řetězců, které lze použít s DATE_FORMAT() funkce. Úplný seznam formátovacích řetězců/specifikátorů, které lze použít s DATE_FORMAT(), najdete v části MariaDB Format Strings . TIME_FORMAT() funkce přijímá pouze specifikátory formátu pro hodiny, minuty a sekundy. Jakýkoli jiný specifikátor formátu má za následek null nebo 0 se vrací.
DATE_FORMAT() Funkce
DATE_FORMAT() Funkce umožňuje formátovat hodnotu data nebo data a času na základě formátovacího řetězce. Formátovací řetězec určuje, jak má být formátován datum/čas.
Můžeme tedy použít stejné specifikátory formátu, které jsme použili u TIME_FORMAT() funkce v předchozím příkladu. Nicméně DATE_FORMAT() nepřijímá TIME hodnotu, takže budeme muset předat DATETIME hodnotu.
SELECT
DATE_FORMAT('2023-01-01 18:45:30', '%H') AS '%H',
DATE_FORMAT('2023-01-01 18:45:30', '%h') AS '%h',
DATE_FORMAT('2023-01-01 18:45:30', '%I') AS '%I',
DATE_FORMAT('2023-01-01 18:45:30', '%k') AS '%k',
DATE_FORMAT('2023-01-01 18:45:30', '%l') AS '%l'; Výsledek:
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| 18 | 06 | 06 | 18 | 6 |+------+------+------+------+------+
Předání jen TIME value to pomocí této funkce zcela neodstraní:
SELECT
DATE_FORMAT('18:45:30', '%H') AS '%H',
DATE_FORMAT('18:45:30', '%h') AS '%h',
DATE_FORMAT('18:45:30', '%I') AS '%I',
DATE_FORMAT('18:45:30', '%k') AS '%k',
DATE_FORMAT('18:45:30', '%l') AS '%l'; Výsledek:
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| NULL | NULL | NULL | NULL | NULL |+------+------+------+------+------+1 řádek v sadě, 5 varování (0,000 s)Zobrazit varování:
SHOW WARNINGS;Výsledek:
+---------+------+----------------------------- ---------+| Úroveň | Kód | Zpráva |+---------+------+------------------------------ --------+| Upozornění | 1292 | Nesprávná hodnota data a času:'18:45:30' || Upozornění | 1292 | Nesprávná hodnota data a času:'18:45:30' || Upozornění | 1292 | Nesprávná hodnota data a času:'18:45:30' || Upozornění | 1292 | Nesprávná hodnota data a času:'18:45:30' || Upozornění | 1292 | Nesprávná hodnota data a času:'18:45:30' |+---------+------+--------------------- ------------------+