In Oracle Database, EXTRACT(datetime) la funzione estrae e restituisce il valore di un campo datetime specificato da un'espressione datetime o intervallo.
Sintassi
La sintassi è questa:
EXTRACT( { YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM { expr }
)
Dove expr è qualsiasi espressione che restituisce un tipo di dati datetime o intervallo compatibile con il campo richiesto.
L'expr argomento viene trattato come un tipo di dati datetime ANSI.
Esempio 1
Ecco un esempio per dimostrare la funzione:
SELECT EXTRACT(YEAR FROM DATE '2027-10-03')
FROM DUAL; Risultato:
2027
Esempio 2
Ecco un esempio che estrae i secondi e i microsecondi da un TIMESTAMP valore:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2027-10-15 23:10:57.98321 +04:00') AS Result
FROM DUAL; Risultato:
57.98321
Intervalli
Ecco un esempio che estrae l'anno da un intervallo letterale:
SELECT EXTRACT(YEAR FROM INTERVAL '25-3' YEAR TO MONTH)
FROM DUAL; Risultato:
25
Tentativo di estrazione del campo errato
Ecco cosa succede quando proviamo a estrarre un campo che non esiste nel valore specificato:
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL; Risultato:
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: Non tutte le parti della data possono essere estratte da tutti i tipi di dati. Consulta la documentazione Oracle per le parti della data accettate per ogni dato tipo di dati.