Oracle
 sql >> Database >  >> RDS >> Oracle

EXTRACT (datetime) Funzione in Oracle

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.