sql >> Database >  >> RDS >> Oracle

EXTRACT (datetime) Functie in Oracle

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.


  1. Verbinding maken met de database vanuit Unity

  2. Somwaarden van multidimensionale array per sleutel zonder lus

  3. LPAD in SQL Server 2008

  4. Manier om meerdere SELECT's te proberen totdat een resultaat beschikbaar is?