В 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 за приетите части от дата за всеки даден тип данни.