Syntaxe
extract_datetime :: =
Popis ilustrace extract_datetime.gif
Účel
EXTRACT
extrahuje a vrací hodnotu zadané pole datetime z výrazu hodnoty datetime nebo intervalu. Když extrahujete TIMEZONE_REGION
nebo TIMEZONE_ABBR
(zkratka), vrácená hodnota je řetězec obsahující název nebo zkratku příslušného časového pásma. Když extrahujete kteroukoli z ostatních hodnot, vrácená hodnota je v gregoriánském kalendáři. Při extrahování z datetime s hodnotou časového pásma je vrácená hodnota v UTC. Seznam názvů časových pásem a jejich odpovídajících zkratek získáte dotazem na V$TIMEZONE_NAMES
zobrazení dynamického výkonu.
Tato funkce může být velmi užitečná pro manipulaci s hodnotami pole datetime ve velmi velké tabulky, jak je znázorněno v prvním příkladu níže.
Poznámka:
Funkce letního času vyžaduje názvy regionů časové zóny. Názvy oblastí jsou uloženy ve dvou souborech časových pásem. Výchozí soubor časového pásma je malý soubor obsahující pouze nejběžnější časová pásma pro maximalizaci výkonu. Pokud vaše časové pásmo není ve výchozím souboru, nebudete mít podporu letního času, dokud nezadáte cestu k úplnému (většímu) souboru prostřednictvím proměnné prostředí ORA_TZFILE
.
Některé kombinace pole datetime a výrazu data a času nebo intervalu vedou k nejednoznačnosti. V těchto případech Oracle Database vrátí UNKNOWN
(další informace naleznete v následujících příkladech).
Pole, které extrahujete, musí být polem datetime_value_expr
nebo interval_value_expr
. Můžete například extrahovat pouze YEAR
, MONTH
a DAY
z DATE
hodnota. Podobně můžete TIMEZONE_HOUR
a TIMEZONE_MINUTE
extrahovat pouze z TIMESTAMP
WITH
TIME
ZONE
datový typ.
Viz také:
-
Příručka správce databáze Oracle, kde najdete další informace o nastavení proměnné prostředí
ORA_TZFILE
-
Oracle Průvodce podporou globalizace databáze. Kompletní seznam názvů oblastí časových pásem v obou souborech.
-
„Datetime / Interval Arithmetic“ pro popis
datetime_value_expr
ainterval_value_expr
-
Oracle Database Reference pro informace o zobrazeních dynamického výkonu
Příklady
Následující příklad vrací z oe.orders
tabulky počet objednávek zadaných v každém měsíci:
Následující příklad vrací rok 1998.
SELECT EXTRACT(YEAR FROM DATE "1998-03-07") FROM DUAL;EXTRACT(YEARFROMDATE"1998-03-07")--------------------------------- 1998
Následující příklad s volí ze vzorové tabulky hr.employees
všechny zaměstnance, kteří byli najati po roce 1998:
Následující příklad vede k nejednoznačnosti, takže Oracle vrátí UNKNOWN
:
Nejednoznačnost vzniká, protože ve výrazu je uveden číselný posun časového pásma a tento numerický posun může být mapován na více než jednu oblast časového pásma.