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.