Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SYS_EXTRACT_UTC()-Funktion in Oracle

In der Oracle-Datenbank die SYS_EXTRACT_UTC() extrahiert die UTC (koordinierte Weltzeit) aus einem datetime-Wert mit Zeitzonenoffset oder Zeitzonenregionsname.

Syntax

Die Syntax lautet wie folgt:

SYS_EXTRACT_UTC(datetime_with_timezone)

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

SELECT 
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;

Ergebnis:

25/AUG/35 06:30:45.123456789 AM

Das resultierende Format hängt vom Wert Ihres NLS_TIMESTAMP_FORMAT ab Parameter. Der Standardwert dieses Parameters wird von NLS_TERRITORY abgeleitet Parameter. Das Ändern einer davon kann das Format von SYS_EXTRACT_UTC() ändern Funktion für Ihre Sitzung.

Beispiel:

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;

Ergebnis:

25-AUG-2035 06:30:45.123456789

Und so sieht es aus, wenn ich NLS_TERRITORY setze Parameter auf AMERICA :

ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT 
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 +04:00')
FROM DUAL;

Ergebnis:

25-AUG-35 06.30.45.123456789 AM

Das Ändern dieses Parameters legt implizit das NLS_TIMESTAMP_FORMAT fest in das Format für AMERICA .

Weitere Informationen und Beispiele finden Sie unter So ändern Sie das Datumsformat Ihrer Sitzung.

Name der Zeitzonenregion

Sie können alternativ den Namen der Zeitzonenregion anstelle des Zeitzonenoffsets verwenden.

Beispiel:

SELECT 
SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789 Asia/Bangkok')
FROM DUAL;

Ergebnis:

25-AUG-35 03.30.45.123456789 AM

Standardzeitzone

Wenn keine Zeitzone angegeben ist, wird datetime mit der Sitzungszeitzone verknüpft.

Beispiel:

SELECT SYS_EXTRACT_UTC(TIMESTAMP '2035-08-25 10:30:45.123456789')
FROM DUAL;

Ergebnis:

25-AUG-35 12.30.45.123456789 AM

Sie können die Zeitzone der aktuellen Sitzung mit SESSIONTIMEZONE überprüfen Funktion:

SELECT SESSIONTIMEZONE
FROM DUAL;

Ergebnis:

Australia/Brisbane

Siehe 4 Ways to Change the Time Zone in Oracle für Beispiele, wie Sie dies ändern können.

Null-Argumente

Übergabe von null führt zu einem Fehler:

SELECT SYS_EXTRACT_UTC(null)
FROM DUAL;

Ergebnis:

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.

Fehlendes Argument

Der Aufruf der Funktion mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT SYS_EXTRACT_UTC()
FROM DUAL;

Ergebnis:

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: