sql >> Database >  >> RDS >> Oracle

NEW_TIME() Functie in Oracle

In Oracle Database, de NEW_TIME() functie converteert de datum van een gespecificeerde tijdzone naar een andere gespecificeerde tijdzone, en retourneert het resultaat.

Syntaxis

De syntaxis gaat als volgt:

NEW_TIME(date, timezone1, timezone2)

De functie retourneert dus de datum en tijd in tijdzone timezone2 wanneer datum en tijd in tijdzone timezone1 zijn date .

Houd er rekening mee dat voordat u deze functie gebruikt, u de NLS_DATE_FORMAT moet instellen parameter om 24-uurs tijd weer te geven.

De argumenten timezone1 en timezone2 kan een van deze tekstreeksen zijn:

AST of ADT Atlantic Standard of Daylight Time
BST of BDT Bering-standaardtijd of daglichttijd
CST of CDT Central Standard of Daylight Time
EST of EDT Eastern Standard of Daylight Time
GMT Greenwich Mean Time
HST of HDT Alaska-Hawaï standaardtijd of zomertijd
MST of MDT Mountain Standard of Daylight Time
NST Newfoundland-standaardtijd
PST of PDT Pacific Standard of Daylight Time
YST of YDT Yukon standaard- of daglichttijd

Voorbeeld

Hier is een voorbeeld:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

SELECT
    NEW_TIME(
        TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 
        'AST', 
        'PST'
        )
FROM DUAL;

Resultaat:

2030-03-01 08:30:45

Zoals vermeld, bij gebruik van deze functie de NLS_DATE_FORMAT parameter moet worden ingesteld om 24-uurs tijd weer te geven, dus dat is wat de eerste regel in het bovenstaande voorbeeld doet. U kunt deze regel weglaten als uw sessie NLS_DATE_FORMAT . is parameter gebruikt al 24-uurs tijd. Zie Hoe u de datumnotatie van uw sessie instelt voor meer voorbeelden van het instellen van de datumnotatie voor de huidige sessie.

Nullargumenten

Als een argument null is , het resultaat is null :

SET NULL 'null';

SELECT
    NEW_TIME(null, 'AST', 'ADT') AS "1",
    NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), null, 'ADT') AS "2",
    NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 'AST', null) AS "3"
FROM DUAL;

Resultaat:

      1       2       3 
_______ _______ _______ 
null    null    null   

Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null treedt op als resultaat van een SQL SELECT uitspraak.

U kunt echter SET NULL . gebruiken om een ​​andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null moet worden geretourneerd.

Ontbrekend argument

Bellen NEW_TIME() met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:

SELECT NEW_TIME()
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT NEW_TIME()
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. Hoe door komma's gescheiden waarden naar rijen in orakel te converteren?

  2. Beperking gedefinieerd UITSTELBAAR EERST ONMIDDELLIJK is nog steeds UITGESTELD?

  3. Is er een versiebeheersysteem voor wijzigingen in de databasestructuur?

  4. Hoe u uw MySQL-instanties kunt laten mislukken of crashen voor testen