I Oracle Database, SYS_EXTRACT_UTC()
funktionen extraherar UTC (Coordinated Universal Time) från ett datetime-värde med tidszonförskjutning eller tidszonsregionsnamn.
Syntax
Syntaxen ser ut så här:
SYS_EXTRACT_UTC(datetime_with_timezone)
Exempel
Här är ett exempel att visa:
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 resulterande formatet beror på värdet på din NLS_TIMESTAMP_FORMAT
parameter. Denna parameters standardvärde härleds från NLS_TERRITORY
parameter. Om du ändrar någon av dessa kan formatet för SYS_EXTRACT_UTC()
ändras funktion för din session.
Exempel:
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
Och så här ser det ut när jag ställer in NLS_TERRITORY
parameter till 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 av denna parameter ställer implicit in NLS_TIMESTAMP_FORMAT
till formatet för AMERICA
.
Se Hur du ändrar din sessions datumformat för mer information och exempel.
Tidszonens regionsnamn
Du kan alternativt använda tidszonens regionnamn istället för tidszonsförskjutningen.
Exempel:
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
Standardtidszon
Om en tidszon inte är angiven, är datetime associerad med sessionens tidszon.
Exempel:
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 kontrollera den aktuella sessionens tidszon med SESSIONTIMEZONE
funktion:
SELECT SESSIONTIMEZONE
FROM DUAL;
Resultat:
Australia/Brisbane
Se 4 sätt att ändra tidszonen i Oracle för exempel på hur du ändrar detta.
Nollargument
Skickar null
resulterar i ett fel:
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.
Argument saknas
Att anropa funktionen med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
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: