I Oracle Database er SYS_EXTRACT_UTC()
funktionen udtrækker UTC (Coordinated Universal Time) fra en datetime-værdi med tidszoneforskydning eller tidszoneregionsnavn.
Syntaks
Syntaksen ser sådan ud:
SYS_EXTRACT_UTC(datetime_with_timezone)
Eksempel
Her er et eksempel til demonstration:
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Resultat:
25/AUG/35 06:30:45.123456789 AM
Det resulterende format afhænger af værdien af din NLS_TIMESTAMP_FORMAT
parameter. Denne parameters standardværdi er afledt af NLS_TERRITORY
parameter. Ændring af nogen af disse kan ændre formatet på SYS_EXTRACT_UTC()
funktion til din session.
Eksempel:
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD-MON-RRRR HH24:MI:SSXFF';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Resultat:
25-AUG-2035 06:30:45.123456789
Og sådan ser det ud, når jeg indstiller NLS_TERRITORY
parameter til AMERICA
:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;
Resultat:
25-AUG-35 06.30.45.123456789 AM
Ændring af denne parameter indstiller implicit NLS_TIMESTAMP_FORMAT
til formatet for AMERICA
.
Se, hvordan du ændrer din sessions datoformat for flere oplysninger og eksempler.
Tidszoneregionsnavn
Du kan alternativt bruge tidszoneregionsnavnet i stedet for tidszoneforskydningen.
Eksempel:
SELECT
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 Asia/Bangkok')
FROM DUAL;
Resultat:
25-AUG-35 03.30.45.123456789 AM
Standardtidszone
Hvis en tidszone ikke er angivet, er dato og klokkeslæt knyttet til sessionens tidszone.
Eksempel:
SELECT SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789')
FROM DUAL;
Resultat:
25-AUG-35 12.30.45.123456789 AM
Du kan kontrollere den aktuelle sessions tidszone med SESSIONTIMEZONE
funktion:
SELECT SESSIONTIMEZONE
FROM DUAL;
Resultat:
Australia/Brisbane
Se 4 måder at ændre tidszonen på i Oracle for eksempler på at ændre dette.
Nul-argumenter
Sender null
resulterer i en fejl:
SELECT SYS_EXTRACT_UTC(null)
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT SYS_EXTRACT_UTC(null) FROM DUAL Error at Command Line : 1 Column : 24 Error report - SQL Error: ORA-30175: invalid type given for an argument 30175. 00000 - "invalid type given for an argument" *Cause: There is an argument with an invalid type in the argument list. *Action: Use the correct type wrapper for the argument.
Manglende argument
Kaldning af funktionen med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer i en fejl:
SELECT SYS_EXTRACT_UTC()
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT SYS_EXTRACT_UTC() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: