I Oracle Database er EXTRACT(datetime)
funktion udtrækker og returnerer værdien af et angivet datetime-felt fra et datetime- eller intervaludtryk.
Syntaks
Syntaksen ser sådan ud:
EXTRACT( { YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM { expr }
)
Hvor expr
er ethvert udtryk, der evalueres til en datetime- eller intervaldatatype, der er kompatibel med det anmodede felt.
expr
argument behandles som en ANSI datetime-datatype.
Eksempel 1
Her er et eksempel til at demonstrere funktionen:
SELECT EXTRACT(YEAR FROM DATE '2027-10-03')
FROM DUAL;
Resultat:
2027
Eksempel 2
Her er et eksempel, der udtrækker sekunder og mikrosekunder fra en TIMESTAMP
værdi:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2027-10-15 23:10:57.98321 +04:00') AS Result
FROM DUAL;
Resultat:
57.98321
Intervaller
Her er et eksempel, der uddrager året fra et interval bogstaveligt:
SELECT EXTRACT(YEAR FROM INTERVAL '25-3' YEAR TO MONTH)
FROM DUAL;
Resultat:
25
Forsøg på at udpakke det forkerte felt
Her er, hvad der sker, når vi forsøger at udtrække et felt, der ikke findes i den angivne værdi:
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL;
Resultat:
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:
Ikke alle datodele kan udtrækkes fra alle datatyper. Se Oracle-dokumentationen for de accepterede datodele for hver given datatype.