I Oracle Database, EXTRACT(datetime)
funktionen extraherar och returnerar värdet för ett angivet datetime-fält från ett datetime- eller intervalluttryck.
Syntax
Syntaxen ser ut så här:
EXTRACT( { YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM { expr }
)
Där expr
är vilket uttryck som helst som utvärderas till en datetime- eller intervalldatatyp som är kompatibel med det begärda fältet.
expr
argument behandlas som en ANSI datetime-datatyp.
Exempel 1
Här är ett exempel för att demonstrera funktionen:
SELECT EXTRACT(YEAR FROM DATE '2027-10-03')
FROM DUAL;
Resultat:
2027
Exempel 2
Här är ett exempel som extraherar sekunderna och mikrosekunderna från en TIMESTAMP
värde:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2027-10-15 23:10:57.98321 +04:00') AS Result
FROM DUAL;
Resultat:
57.98321
Intervaller
Här är ett exempel som extraherar året från en bokstavlig intervall:
SELECT EXTRACT(YEAR FROM INTERVAL '25-3' YEAR TO MONTH)
FROM DUAL;
Resultat:
25
Försök att extrahera fel fält
Här är vad som händer när vi försöker extrahera ett fält som inte finns i det angivna värdet:
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:
Alla datumdelar kan inte extraheras från alla datatyper. Se Oracle-dokumentationen för de godkända datumdelarna för varje given datatyp.