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

4 funkce pro získání hodiny z časové hodnoty v MariaDB

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

  1. Oracle- Rozdělit řetězec oddělený čárkou (řetězec obsahuje mezery a po sobě jdoucí čárky)

  2. Jak vyřešit chybějící výraz ORA-00936

  3. ORA-12170:TNS:Vypršel časový limit připojení

  4. Jak NOT LIKE funguje v MariaDB