В Oracle Database, EXTRACT(datetime) функцията извлича и връща стойността на определено поле за дата и час от израз за дата и време или интервал.
Синтаксис
Синтаксисът е така:
EXTRACT( { YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM { expr }
)
Където expr е всеки израз, който се оценява на тип данни за дата и време или интервал, съвместими със заявеното поле.
expr аргументът се третира като ANSI тип данни за дата и време.
Пример 1
Ето пример за демонстриране на функцията:
SELECT EXTRACT(YEAR FROM DATE '2027-10-03')
FROM DUAL; Резултат:
2027
Пример 2
Ето пример, който извлича секундите и микросекундите от TIMESTAMP стойност:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2027-10-15 23:10:57.98321 +04:00') AS Result
FROM DUAL; Резултат:
57.98321
Интервали
Ето пример, който извлича годината от интервален литерал:
SELECT EXTRACT(YEAR FROM INTERVAL '25-3' YEAR TO MONTH)
FROM DUAL; Резултат:
25
Опит за извличане на грешно поле
Ето какво се случва, когато се опитаме да извлечем поле, което не съществува в посочената стойност:
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL; Резултат:
Error starting at line : 1 in command -
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL
Error at Command Line : 2 Column : 25
Error report -
SQL Error: ORA-30076: invalid extract field for extract source
30076. 00000 - "invalid extract field for extract source"
*Cause: The extract source does not contain the specified extract field.
*Action: Не всички части за дата могат да бъдат извлечени от всички типове данни. Вижте документацията на Oracle за приетите части от дата за всеки даден тип данни.