V databázi Oracle EXTRACT(datetime)
funkce extrahuje a vrátí hodnotu zadaného pole datetime z výrazu datetime nebo interval.
Syntaxe
Syntaxe vypadá takto:
EXTRACT( { YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM { expr }
)
Kde expr
je jakýkoli výraz, který se vyhodnotí jako datový typ datetime nebo interval kompatibilní s požadovaným polem.
expr
argument je považován za datový typ ANSI datetime.
Příklad 1
Zde je příklad pro demonstraci funkce:
SELECT EXTRACT(YEAR FROM DATE '2027-10-03')
FROM DUAL;
Výsledek:
2027
Příklad 2
Zde je příklad, který extrahuje sekundy a mikrosekundy z TIMESTAMP
hodnota:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2027-10-15 23:10:57.98321 +04:00') AS Result
FROM DUAL;
Výsledek:
57.98321
Intervaly
Zde je příklad, který extrahuje rok z intervalového literálu:
SELECT EXTRACT(YEAR FROM INTERVAL '25-3' YEAR TO MONTH)
FROM DUAL;
Výsledek:
25
Pokus o extrahování nesprávného pole
Co se stane, když se pokusíme extrahovat pole, které v zadané hodnotě neexistuje:
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL;
Výsledek:
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:
Ne všechny části data lze extrahovat ze všech datových typů. Podívejte se do dokumentace Oracle, kde najdete informace o přijatých datech pro každý daný typ dat.