In der Oracle-Datenbank der EXTRACT(datetime)
Funktion extrahiert und gibt den Wert eines angegebenen DateTime-Feldes aus einem DateTime- oder Interval-Ausdruck zurück.
Syntax
Die Syntax lautet wie folgt:
EXTRACT( { YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM { expr }
)
Wobei expr
ist ein beliebiger Ausdruck, der zu einem DateTime- oder Intervall-Datentyp ausgewertet wird, der mit dem angeforderten Feld kompatibel ist.
Der expr
Argument wird als ANSI-Datum/Uhrzeit-Datentyp behandelt.
Beispiel 1
Hier ist ein Beispiel, um die Funktion zu demonstrieren:
SELECT EXTRACT(YEAR FROM DATE '2027-10-03')
FROM DUAL;
Ergebnis:
2027
Beispiel 2
Hier ist ein Beispiel, das die Sekunden und Mikrosekunden aus einem TIMESTAMP
extrahiert Wert:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2027-10-15 23:10:57.98321 +04:00') AS Result
FROM DUAL;
Ergebnis:
57.98321
Intervalle
Hier ist ein Beispiel, das das Jahr aus einem Intervallliteral extrahiert:
SELECT EXTRACT(YEAR FROM INTERVAL '25-3' YEAR TO MONTH)
FROM DUAL;
Ergebnis:
25
Versuch, das falsche Feld zu extrahieren
Folgendes passiert, wenn wir versuchen, ein Feld zu extrahieren, das im angegebenen Wert nicht vorhanden ist:
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL;
Ergebnis:
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:
Nicht alle Datumsteile können aus allen Datentypen extrahiert werden. Siehe die Oracle-Dokumentation für die akzeptierten Datumsteile für jeden gegebenen Datentyp.