In Oracle Database, de EXTRACT(datetime)
functie extraheert en retourneert de waarde van een gespecificeerd datetime-veld uit een datetime- of intervalexpressie.
Syntaxis
De syntaxis gaat als volgt:
EXTRACT( { YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM { expr }
)
Waar expr
is elke expressie die resulteert in een datatype datetime of interval dat compatibel is met het gevraagde veld.
De expr
argument wordt behandeld als een ANSI datetime datatype.
Voorbeeld 1
Hier is een voorbeeld om de functie te demonstreren:
SELECT EXTRACT(YEAR FROM DATE '2027-10-03')
FROM DUAL;
Resultaat:
2027
Voorbeeld 2
Hier is een voorbeeld dat de seconden en microseconden extraheert uit een TIMESTAMP
waarde:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2027-10-15 23:10:57.98321 +04:00') AS Result
FROM DUAL;
Resultaat:
57.98321
Intervallen
Hier is een voorbeeld dat het jaar extraheert uit een interval letterlijk:
SELECT EXTRACT(YEAR FROM INTERVAL '25-3' YEAR TO MONTH)
FROM DUAL;
Resultaat:
25
Poging om het verkeerde veld te extraheren
Dit is wat er gebeurt als we proberen een veld te extraheren dat niet bestaat in de opgegeven waarde:
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL;
Resultaat:
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:
Niet alle datumdelen kunnen uit alle gegevenstypen worden geëxtraheerd. Zie de Oracle-documentatie voor de geaccepteerde datumdelen voor elk gegeven gegevenstype.