sql >> Database teknologi >  >> RDS >> Oracle

SYS_EXTRACT_UTC() Funktion i Oracle

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:

  1. SQL-fejl ORA-01722:ugyldigt nummer

  2. Sådan konverteres en streng til en dato/tid i SQL Server ved hjælp af CONVERT()

  3. mysql lagret procedure, der kalder sig selv rekursivt

  4. hvordan man implementerer tabelarv i GreenDao