sql >> Databasteknik >  >> RDS >> Oracle

SYS_EXTRACT_UTC() Funktion i Oracle

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:

  1. Hur väljer man en specifik kolumn från rumsdatabasen givet en specifik parameter i rumsfrågan?

  2. Exempel på SQL Server FÖR JSON AUTO (T-SQL)

  3. Returnera alla filgrupper för den aktuella databasen i SQL Server

  4. CASE .. NÄR uttryck i Oracle SQL