W bazie danych Oracle EXTRACT(datetime) funkcja wyodrębnia i zwraca wartość określonego pola daty i godziny z wyrażenia daty i godziny lub wyrażenia interwału.
Składnia
Składnia wygląda tak:
EXTRACT( { YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM { expr }
)
Gdzie expr to dowolne wyrażenie, którego wynikiem jest data i godzina lub typ danych interwału zgodny z żądanym polem.
expr argument jest traktowany jako typ danych ANSI datetime.
Przykład 1
Oto przykład demonstrujący funkcję:
SELECT EXTRACT(YEAR FROM DATE '2027-10-03')
FROM DUAL; Wynik:
2027
Przykład 2
Oto przykład, który wyodrębnia sekundy i mikrosekundy z TIMESTAMP wartość:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2027-10-15 23:10:57.98321 +04:00') AS Result
FROM DUAL; Wynik:
57.98321
Interwały
Oto przykład, który wyodrębnia rok z literału interwałowego:
SELECT EXTRACT(YEAR FROM INTERVAL '25-3' YEAR TO MONTH)
FROM DUAL; Wynik:
25
Próba wyodrębnienia niewłaściwego pola
Oto, co się dzieje, gdy próbujemy wyodrębnić pole, które nie istnieje w określonej wartości:
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL; Wynik:
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: Nie wszystkie części daty można wyodrębnić ze wszystkich typów danych. Zapoznaj się z dokumentacją Oracle, aby zapoznać się z akceptowanymi częściami dat dla każdego typu danych.