В PostgreSQL, extract() функцията извлича подполета като година, месец, час или минута, част от стойност за дата/час.
Това е еквивалентно на date_part() функция, макар и с малко по-различен синтаксис.
Синтаксис
Синтаксисът е така:
EXTRACT(field FROM source) Къде:
fieldis е идентификатор или низ, който избира кое поле да се извлече от изходната стойност.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
Имена на полета
Първият аргумент може да бъде някой от следните:
centurydaydecadedowdoyepochhourisodowisoyearmicrosecondsmillenniummillisecondsminutemonthquartersecondtimezonetimezone_hourtimezone_minuteweekyear
Те са същите като валидните стойности за date_part() функция.