В PostgreSQL, extract()
функцията извлича подполета като година, месец, час или минута, част от стойност за дата/час.
Това е еквивалентно на date_part()
функция, макар и с малко по-различен синтаксис.
Синтаксис
Синтаксисът е така:
EXTRACT(field FROM source)
Къде:
field
is е идентификатор или низ, който избира кое поле да се извлече от изходната стойност.source
е времево клеймо или винтервала .
Пример – Timestamp
Ето основен пример, за да демонстрирате как да извлечете поле от времево клеймо стойност.
SELECT extract(hour FROM timestamp '2022-10-30 10:11:35');
Резултат:
10
Този пример извлича полето за час от timestamp стойност.
Както споменахме, първият аргумент може да бъде идентификатор или низ. Това е една от разликите между extract()
и date_part()
. Когато използвате date_part()
, трябва да предоставите низ за този аргумент.
Ето отново същия пример, освен като низ.
SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35');
Резултат:
10
Ето пример със същото клеймо за време, но този път извличам полето за годината.
SELECT extract(year FROM timestamp '2022-10-30 10:11:35');
Резултат:
2022
Пример – Интервал
В този пример извличам част от дата от интервал стойност.
SELECT extract(hour FROM interval '7 hours 45 minutes');
Резултат:
7
В следващия пример функцията връща правилно броя на часовете, въпреки че предоставям само броя на минутите.
SELECT extract(hour FROM interval '120 minutes');
Резултат:
2
Въпреки това, не разчитайте на тази техника. Може да откриете, че не винаги получавате резултата, който очаквате.
Например:
SELECT extract(hour FROM interval '100 minutes');
Резултат:
1
И още едно:
SELECT extract(minute FROM interval '2 hours');
Резултат:
0
Имена на полета
Първият аргумент може да бъде някой от следните:
century
day
decade
dow
doy
epoch
hour
isodow
isoyear
microseconds
millennium
milliseconds
minute
month
quarter
second
timezone
timezone_hour
timezone_minute
week
year
Те са същите като валидните стойности за date_part()
функция.