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:
field
is je identifikátor nebo řetězec, který vybírá, jaké pole se má extrahovat ze zdrojové hodnoty.source
je č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:
century
day
decade
dow
doy
epoch
hour
isodow
isoyear
microseconds
millennium
milliseconds
minute
month
quarter
second
timezone
timezone_hour
timezone_minute
week
year
Jsou stejné jako platné hodnoty pro date_part()
funkce.