Syntax
extract_datetime :: =
Beskrivning av illustrationen extract_datetime.gif
Syfte
EXTRACT extraherar och returnerar värdet av ett angivet datetime-fält från ett datetime- eller intervallvärdesuttryck. När du extraherar en TIMEZONE_REGION eller TIMEZONE_ABBR (förkortning) är det returnerade värdet en sträng som innehåller lämpligt tidszonsnamn eller förkortning. När du extraherar något av de andra värdena är det returnerade värdet i den gregorianska kalendern. När du extraherar från en datetime med ett tidszonsvärde är värdet som returneras i UTC. För en lista över tidszonsnamn och deras motsvarande förkortningar, fråga V$TIMEZONE_NAMES dynamisk prestandavy.
Denna funktion kan vara mycket användbar för att manipulera datatidsfältvärden stora tabeller, som visas i det första exemplet nedan.
Obs!
Tidszonens regionnamn behövs av sommartidsfunktionen. Regionnamnen lagras i två tidszonsfiler. Standardtidszonfilen är en liten fil som endast innehåller de vanligaste tidszonerna för att maximera prestanda. Om din tidszon inte finns i standardfilen har du inte stöd för sommartid förrän du ger en sökväg till den fullständiga (större) filen med hjälp av miljövariabeln ORA_TZFILE.
Vissa kombinationer av datetime-fält och uttryck för datetime eller intervallvärde resulterar i tvetydighet. I dessa fall returnerar Oracle Database UNKNOWN (se exemplen som följer för ytterligare information).
Fältet du extraherar måste vara ett fält i datetime_value_expr eller interval_value_expr. Du kan till exempel endast extrahera YEAR, MONTH och DAY från en DATE värde. På samma sätt kan du extrahera TIMEZONE_HOUR och TIMEZONE_MINUTE från TIMESTAMP WITH TIME ZONE datatyp.
Se även:
-
Oracle Database Administrator’s Guide för mer information om hur du ställer in
ORA_TZFILEmiljövariabel -
Oracle Supportguide för databasglobalisering. För en fullständig lista över tidszonens regionnamn i båda filerna
-
”Datetime / Interval Arithmetic” för en beskrivning av
datetime_value_exprochinterval_value_expr -
Oracle Database Reference för information om dynamiska prestandavyer
Exempel
Följande exempel returnerar från oe.orders tabellen antalet beställningar som görs i varje månad:
Följande exempel returnerar 1998.
SELECT EXTRACT(YEAR FROM DATE "1998-03-07") FROM DUAL;EXTRACT(YEARFROMDATE"1998-03-07")--------------------------------- 1998
Följande exempel s väljer från provtabellen hr.employees alla anställda som anställdes efter 1998:
Följande exempel resulterar i tvetydighet, så Oracle returnerar UNKNOWN:
Tvetydigheten uppstår eftersom den tidszonens numeriska förskjutning tillhandahålls i uttrycket, och den numeriska förskjutningen kan mappas till mer än en tidszonregion.