V PostgreSQL, extract() Funkce načte podpole, jako je rok, měsíc, hodina nebo minuta, část z hodnoty data/času.
Je ekvivalentní k date_part() funkce, i když s mírně odlišnou syntaxí.
Syntaxe
Syntaxe vypadá takto:
EXTRACT(field FROM source) Kde:
fieldis je identifikátor nebo řetězec, který vybírá, jaké pole se má extrahovat ze zdrojové hodnoty.sourceje časové razítko nebo interval .
Příklad – Časové razítko
Zde je základní příklad, který ukazuje, jak načíst pole z časového razítka hodnotu.
SELECT extract(hour FROM timestamp '2022-10-30 10:11:35'); Výsledek:
10
Tento příklad načte pole hodiny z časového razítka hodnotu.
Jak již bylo zmíněno, prvním argumentem může být identifikátor nebo řetězec. Toto je jeden z rozdílů mezi extract() a date_part() . Při použití date_part() , musíte pro tento argument zadat řetězec.
Zde je znovu stejný příklad, s výjimkou řetězce.
SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35'); Výsledek:
10
Zde je příklad se stejným časovým razítkem, ale tentokrát načítám pole roku.
SELECT extract(year FROM timestamp '2022-10-30 10:11:35'); Výsledek:
2022
Příklad – Interval
V tomto příkladu získám část data z intervalu hodnotu.
SELECT extract(hour FROM interval '7 hours 45 minutes'); Výsledek:
7
V dalším příkladu funkce správně vrací počet hodin, i když uvádím pouze počet minut.
SELECT extract(hour FROM interval '120 minutes'); Výsledek:
2
S touto technikou však nepočítejte. Možná zjistíte, že ne vždy dostanete výsledek, který očekáváte.
Například:
SELECT extract(hour FROM interval '100 minutes'); Výsledek:
1
A další:
SELECT extract(minute FROM interval '2 hours'); Výsledek:
0
Názvy polí
První argument může být kterýkoli z následujících:
centurydaydecadedowdoyepochhourisodowisoyearmicrosecondsmillenniummillisecondsminutemonthquartersecondtimezonetimezone_hourtimezone_minuteweekyear
Jsou stejné jako platné hodnoty pro date_part() funkce.