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' |+---------+------+--------------------- ------------------+