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

NEW_TIME() Funktion i Oracle

I Oracle Database er NEW_TIME() funktion konverterer datoen fra en specificeret tidszone til en anden specificeret tidszone og returnerer resultatet.

Syntaks

Syntaksen ser sådan ud:

NEW_TIME(date, timezone1, timezone2)

Så funktionen returnerer datoen og klokkeslættet i tidszonen timezone2 når dato og klokkeslæt i tidszonen timezone1 er date .

Bemærk, at før du bruger denne funktion, skal du indstille NLS_DATE_FORMAT parameter for at vise 24-timers tid.

Argumenterne timezone1 og timezone2 kan være en af ​​disse tekststrenge:

AST eller ADT Atlantic Standard eller Daylight Time
BST eller BDT Bering Standard eller Daylight Time
CST eller CDT Central standard eller dagslystid
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

Eksempel

Her er et eksempel:

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ævnt, når du bruger denne funktion, er NLS_DATE_FORMAT parameter skal indstilles til at vise 24-timers tid, så det er, hvad den første linje gør i ovenstående eksempel. Du kan udelade denne linje, hvis din sessions NLS_DATE_FORMAT parameter bruger allerede 24-timers tid. Se Sådan indstiller du din sessions datoformat for flere eksempler på indstilling af datoformatet for den aktuelle session.

Nul-argumenter

Hvis et argument er null , resultatet er 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 returnerer SQLcl og SQL*Plus et tomt mellemrum, når null opstår som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Manglende argument

Kalder NEW_TIME() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

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. Udskriver alle PHP-fejl til databasen, ikke error_log

  2. Brug af Oracle JDeveloper med MySQL Database Service på Oracle Cloud Platform, del 2

  3. Del forbindelse til postgres db på tværs af processer i Python

  4. SQL - Forespørgsel for at få serverens IP-adresse