sql >> Databasteknik >  >> RDS >> Oracle

NEW_TIME() Funktion i Oracle

I Oracle Database, NEW_TIME() funktionen konverterar datumet från en angiven tidszon till en annan specificerad tidszon och returnerar resultatet.

Syntax

Syntaxen ser ut så här:

NEW_TIME(date, timezone1, timezone2)

Så, funktionen returnerar datum och tid i tidszonen timezone2 när datum och tid i tidszonen timezone1 är date .

Observera att innan du använder den här funktionen måste du ställa in NLS_DATE_FORMAT parameter för att visa 24-timmars tid.

Argumenten timezone1 och timezone2 kan vara någon av dessa textsträngar:

AST eller ADT Atlantic Standard eller Daylight Time
BST eller BDT Bering Standard eller Daylight Time
CST eller CDT Central Standard eller Daylight Time
EST eller EDT Eastern Standard eller Daylight Time
GMT Greenwich Mean Time
HST eller HDT Alaska-Hawaii Standard Time eller Daylight Time
MST eller MDT Mountain Standard eller Daylight Time
NST Newfoundland Standard Time
PST eller PDT Pacific Standard eller Daylight Time
YST eller YDT Yukon Standard eller Daylight Time

Exempel

Här är ett exempel:

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;

Resultat:

2030-03-01 08:30:45

Som nämnts, när du använder den här funktionen NLS_DATE_FORMAT parametern måste ställas in för att visa 24-timmars tid, så det är vad den första raden gör i exemplet ovan. Du kan utelämna den här raden om sessionens NLS_DATE_FORMAT parametern använder redan 24-timmars tid. Se Hur du ställer in din sessions datumformat för fler exempel på hur du ställer in datumformatet för den aktuella sessionen.

Nollargument

Om något argument är null , resultatet är 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;

Resultat:

      1       2       3 
_______ _______ _______ 
null    null    null   

Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null uppstår som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Argument saknas

Ringer NEW_TIME() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

SELECT NEW_TIME()
FROM DUAL;

Resultat:

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. WordPress – Bakom kulisserna, del 1

  2. Referensdatamönstret:utbyggbart och flexibelt

  3. Android:onUpgrade anropar inte vid databasuppgradering

  4. Hur Power()-funktionen fungerar i PostgreSQL