sql >> Database >  >> RDS >> Oracle

SYS_EXTRACT_UTC() Functie in Oracle

In Oracle Database, de SYS_EXTRACT_UTC() functie extraheert de UTC (Coordinated Universal Time) uit een datetime-waarde met tijdzone-offset of tijdzoneregionaam.

Syntaxis

De syntaxis gaat als volgt:

SYS_EXTRACT_UTC(datetime_with_timezone)

Voorbeeld

Hier is een voorbeeld om te demonstreren:

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

Resultaat:

25/AUG/35 06:30:45.123456789 AM

Het resulterende formaat hangt af van de waarde van uw NLS_TIMESTAMP_FORMAT parameter. De standaardwaarde van deze parameter is afgeleid van de NLS_TERRITORY parameter. Het wijzigen van een van deze kan het formaat van de SYS_EXTRACT_UTC() . wijzigen functie voor uw sessie.

Voorbeeld:

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;

Resultaat:

25-AUG-2035 06:30:45.123456789

En zo ziet het eruit als ik de NLS_TERRITORY . instel parameter naar AMERICA :

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

Resultaat:

25-AUG-35 06.30.45.123456789 AM

Als u deze parameter wijzigt, stelt u impliciet de NLS_TIMESTAMP_FORMAT . in naar het formaat voor AMERICA .

Zie Hoe u de datumnotatie van uw sessie kunt wijzigen voor meer informatie en voorbeelden.

Naam regio tijdzone

U kunt ook de naam van de tijdzoneregio gebruiken in plaats van de tijdzoneverschuiving.

Voorbeeld:

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

Resultaat:

25-AUG-35 03.30.45.123456789 AM

Standaard tijdzone

Als er geen tijdzone is opgegeven, wordt de datetime gekoppeld aan de tijdzone van de sessie.

Voorbeeld:

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

Resultaat:

25-AUG-35 12.30.45.123456789 AM

U kunt de tijdzone van de huidige sessie controleren met de SESSIONTIMEZONE functie:

SELECT SESSIONTIMEZONE
FROM DUAL;

Resultaat:

Australia/Brisbane

Zie 4 manieren om de tijdzone in Oracle te wijzigen voor voorbeelden om dit te wijzigen.

Nullargumenten

Doorgeven van null resulteert in een fout:

SELECT SYS_EXTRACT_UTC(null)
FROM DUAL;

Resultaat:

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.

Ontbrekend argument

Het aanroepen van de functie met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:

SELECT SYS_EXTRACT_UTC()
FROM DUAL;

Resultaat:

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. Rijwaarden samenvoegen T-SQL

  2. SqlBulkCopy invoegen met identiteitskolom

  3. PostgreSQL waar alles in array staat

  4. Meerdere rijen invoegen in een enkele SQL-query - Interviewvraag van de week #069