V MySQL můžete použít EXTRACT()
funkce pro extrahování částí z data. Můžete například extrahovat část roku, část měsíce nebo část dne atd. Můžete také extrahovat části z časové složky, jako jsou minuty, sekundy, mikrosekundy atd.
Tento článek obsahuje příklady k demonstraci.
Syntaxe
Syntaxe vypadá takto:
EXTRACT(jednotka DATUM)
Kde unit
je část data, kterou chcete extrahovat, a date
je hodnota data, ze které se má tato část extrahovat.
Seznam platných specifikátorů jednotek naleznete v tabulce ve spodní části tohoto článku.
Příklad 1
Zde je příklad, který demonstruje základní použití funkce.
VYBRAT EXTRAKT (ROK OD '2019-01-01') JAKO 'Výsledek';
Výsledek:
+---------+| Výsledek |+--------+| 2019 |+--------+
Příklad 2 – Více částí data
Zde extrahuji různé části data z data.
SET @date ='2019-10-03';VYBERTE EXTRAKT (DEN OD @date) JAKO 'Den', EXTRAKT (MĚSÍC OD @date) JAKO 'Měsíc', EXTRAKT (YEAR OD @date) JAKO 'Rok ';
Výsledek:
+------+-------+------+| den | Měsíc | Rok |+------+-------+------+| 3 | 10 | 2019 |+------+-------+------+
Příklad 3 – Extrakce časových částí
Zde extrahuji různé časové části z data.
SET @date ='2019-10-03 12:35:05.123456';VYBERTE EXTRAKT (HODINU OD @datum) JAKO 'hodiny', EXTRAKT (MINUTE OD @date) JAKO 'minuty', EXTRAKT (SECOND OD @ datum) JAKO 'Sekundy', EXTRAKT (MIKROSECOND Z @date) JAKO 'Mikrosekundy';
Výsledek:
+-------+---------+---------+--------------+| Hodiny | minuty | Vteřiny | Mikrosekundy |+-------+---------+---------+--------------+| 12 | 35 | 5 | 123456 |+-------+---------+---------+--------------+
Příklad 4 – Kombinace specifikátorů jednotek
Specifikátory jednotek můžete také kombinovat takto:
SET @date ='2019-10-03 12:35:05.123456';VYBRAT EXTRACT(HODINA_MICROSECOND OD @date) JAKO 'Výsledek';
Výsledek:
+---------------+| Výsledek |+---------------+| 123505123456 |+--------------+
Tento příklad vrátí vše od části hodin po část mikrosekund.
Příklad databáze
Zde je příklad extrahování roku a měsíce ze sloupce v databázi:
POUŽÍVEJTE sakila;VYBERTE datum_platby JAKO 'Datum/Čas', EXTRACT (YEAR_MONTH OD payment_date) JAKO 'Rok/Měsíc'OD platbyWHERE payment_id =1;
Výsledek:
+---------------------+------------+| Datum/čas | Rok/měsíc |+---------------------+------------+| 2005-05-25 11:30:37 | 200505 |+---------------------+------------+
Aktuální datum/čas
Zde extrahuji část měsíce z data vygenerovaného pomocí CURDATE()
funkce.
SELECT CURDATE(), EXTRACT(MĚSÍC OD CURDATE());
Výsledek:
+------------+-------------------------------+| AKTUÁLNÍ() | EXTRAKT (MĚSÍC OD AKTUÁLNÍHO()) |+------------+--------------------------- ----+| 2018-06-26 | 6 |+------------+-------------------------------+V tomto příkladu extrahuji hodinovou část z aktuálního data a času (který je generován pomocí
NOW()
funkce).VYBRAT HNED(), EXTRAKTOVAT(HODINA OD TEĎ());Výsledek:
+---------------------+------------------------ --+| NYNÍ() | EXTRAKT (HODINA OD TEĎ()) |+---------------------+------------------ --------+| 2018-06-26 09:01:46 | 9 |+---------------------+------------------------- -+Očekávané hodnoty
Následující tabulka ukazuje platné hodnoty jednotek a jejich očekávaný formát.
unit Hodnota | Očekáváno expr Formát |
---|---|
MIKROSECOND | MIKROSEKUNDY |
DRUHÁ | SEKUND |
MINUTE | MINUTY |
HODINA | HODINY |
DEN | DNY |
WEEK | WEEKS |
MĚSÍC | MĚSÍCE |
ČTVRTLETÍ | ČTVRTLETÍ |
ROK | ROKY |
SECOND_MICROSECOND | „SECONDS.MICROSECONDS“ |
MINUTE_MICROSECOND | „MINUTY:SECONDS.MICROSECONDS“ |
MINUTE_SECOND | „MINUTY:SECONDS“ |
HOUR_MICROSECOND | 'HOURS:MINUTES:SECONDS.MICROSECONDS' |
HOUR_SECOND | „HOURS:MINUTES:SECONDS“ |
HOUR_MINUTE | „HOURS:MINUTES“ |
DAY_MICROSECOND | 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' |
DAY_SECOND | „DAYS HOURS:MINUTES:SECONDS“ |
DAY_MINUTE | „DAYS HOURS:MINUTES“ |
DAY_HOUR | „DAYS HOURS“ |
YEAR_MONTH | „ROKY-MĚSÍCE“ |