Syntaks
extract_datetime :: =
Beskrivelse af illustrationen extract_datetime.gif
Formål
EXTRACT udtrækker og returnerer værdien af et specificeret datetime-felt fra et datetime- eller intervalværdiudtryk. Når du udtrækker en TIMEZONE_REGION eller TIMEZONE_ABBR (forkortelse), er den returnerede værdi en streng, der indeholder det relevante tidszone navn eller forkortelse. Når du udvinder en af de andre værdier, er den returnerede værdi i den gregorianske kalender. Når der ekstraheres fra en datetid med en tidszoneværdi, er den returnerede værdi i UTC. For en liste over tidszonenavne og deres tilsvarende forkortelser, spørg V$TIMEZONE_NAMES dynamisk visning af ydeevne.
Denne funktion kan være meget nyttig til at manipulere datetime-feltværdier i store tabeller, som vist i det første eksempel nedenfor.
Bemærk:
Regionzonens navne er nødvendige for dagslysbesparelsesfunktionen. Regionens navne er gemt i to tidszonefiler. Standard tidszonefilen er en lille fil, der kun indeholder de mest almindelige tidszoner for at maksimere ydeevnen. Hvis din tidszone ikke er i standardfilen, har du ikke understøttelse af sommertid, før du giver en sti til den komplette (større) fil ved hjælp af ORA_TZFILE miljøvariablen.
Nogle kombinationer af datetime-felt og udtryk for datetime eller intervalværdi resulterer i tvetydighed. I disse tilfælde returnerer Oracle Database UNKNOWN (se eksemplerne, der følger for yderligere information).
Det felt, du udpakker, skal være et felt i datetime_value_expr eller interval_value_expr. For eksempel kan du kun udtrække YEAR, MONTH og DAY fra en DATE værdi. På samme måde kan du kun udtrække TIMEZONE_HOUR og TIMEZONE_MINUTE fra TIMESTAMP WITH TIME ZONE datatype.
Se også:
-
Oracle Database Administrator’s Guide for mere information om indstilling af
ORA_TZFILEmiljøvariabel -
Oracle Supportvejledning til databaseglobalisering. For en komplet oversigt over tidszoneregionsnavne i begge filer
-
“Datetime / Interval Arithmetic” for en beskrivelse af
datetime_value_exproginterval_value_expr -
Oracle Database Reference for information om dynamiske præstationsvisninger
Eksempler
Følgende eksempel returnerer fra tabellen oe.orders antallet af ordrer, der er afgivet i hver måned:
Følgende eksempel returnerer året 1998.
SELECT EXTRACT(YEAR FROM DATE "1998-03-07") FROM DUAL;EXTRACT(YEARFROMDATE"1998-03-07")--------------------------------- 1998
Følgende eksempel er vælger fra eksempeltabellen hr.employees alle medarbejdere, der blev ansat efter 1998:
Følgende eksempel resulterer i tvetydighed, så Oracle returnerer UNKNOWN:
Tvetydigheden opstår, fordi den tidszone-numeriske forskydning er angivet i udtrykket, og den numeriske forskydning kan kortlægges til mere end en tidszone-region.