Szintaxis
extract_datetime :: =
Az extract_datetime.gif ábra leírása
Cél
EXTRACT kivonja és visszaadja a megadott dátum és idő mező egy dátum vagy intervallum érték kifejezésből. Ha kivon egy TIMEZONE_REGION vagy TIMEZONE_ABBR (rövidítést), a visszaadott érték egy karakterlánc, amely a megfelelő időzóna nevét vagy rövidítését tartalmazza. Ha kibontja a többi értéket, a visszaadott érték a Gergely-naptárban található. Ha egy időzónából időzónás értékkel vonunk ki, a visszaküldött érték UTC-ben van megadva. Az időzóna nevek és azok megfelelő rövidítéseinek felsorolásához kérdezze meg a V$TIMEZONE_NAMES dinamikus teljesítmény nézetet.
Ez a funkció nagyon hasznos lehet a dátumidő mezőértékeinek kezelésében nagyon nagy táblázatok, amint azt az alábbi első példa mutatja.
Megjegyzés:
Az időzóna régiónevekre a nyári időszámítás funkció szükséges. A régióneveket két időzónafájl tárolja. Az alapértelmezett időzóna fájl egy kis fájl, amely csak a leggyakoribb időzónákat tartalmazza a teljesítmény maximalizálása érdekében. Ha az időzónája nem szerepel az alapértelmezett fájlban, akkor nem lesz nyári időszámítási támogatása, amíg a ORA_TZFILE környezeti változó útján megadja a teljes (nagyobb) fájl elérési útját.
A dátumidő mező és a dátumidő vagy intervallumérték kifejezés egyes kombinációi kétértelműséget eredményeznek. Ezekben az esetekben az Oracle Database UNKNOWN -et ad vissza (további információkért lásd az alábbi példákat).
A kibontandó mezőnek a datetime_value_expr vagy interval_value_expr. Például csak YEAR, MONTH és DAY nyerhet ki egy DATE érték. Hasonlóképpen, kivonhatja a TIMEZONE_HOUR és TIMEZONE_MINUTE elemeket csak a TIMESTAMP WITH TIME ZONE adattípus.
Lásd még:
-
Az Oracle Database Administrator útmutatója a
ORA_TZFILEkörnyezeti változó beállításáról -
Oracle Adatbázis-globalizációs támogatási útmutató: az időzóna-régiók nevének teljes felsorolásához mindkét fájlban
-
“Datetime / Interval Arithmetic” az
datetime_value_exprésinterval_value_expr -
Oracle Database Reference a dinamikus teljesítménynézetekkel kapcsolatos információkért
Példák
A következő példa a oe.orders táblából adja vissza az egyes hónapokban leadott rendelések számát:
A következő példa az 1998-as évet adja vissza.
SELECT EXTRACT(YEAR FROM DATE "1998-03-07") FROM DUAL;EXTRACT(YEARFROMDATE"1998-03-07")--------------------------------- 1998
A következő p kiválasztja a mintatáblázatból hr.employees az összes alkalmazottat, akiket 1998 után vettek fel:
A következő példa kétértelműséget eredményez, így az Oracle visszaadja a UNKNOWN:
A kétértelműség azért merül fel, mert az időzóna numerikus eltolása meg van adva a kifejezésben, és ez a numerikus eltolás több időzónarégióra is leképezhető.