Oracle
 sql >> Datenbank >  >> RDS >> Oracle

NEW_TIME()-Funktion in Oracle

In der Oracle-Datenbank die NEW_TIME() Funktion konvertiert das Datum von einer angegebenen Zeitzone in eine andere angegebene Zeitzone und gibt das Ergebnis zurück.

Syntax

Die Syntax lautet wie folgt:

NEW_TIME(date, timezone1, timezone2)

Die Funktion gibt also das Datum und die Uhrzeit in der Zeitzone timezone2 zurück wann Datum und Uhrzeit in der Zeitzone timezone1 sind date .

Beachten Sie, dass Sie vor Verwendung dieser Funktion den NLS_DATE_FORMAT festlegen müssen Parameter zur Anzeige der 24-Stunden-Zeit.

Die Argumente timezone1 und timezone2 kann eine dieser Textzeichenfolgen sein:

AST oder ADT Atlantische Standardzeit oder Sommerzeit
BST oder BDT Beringstandard oder Sommerzeit
CST oder CDT Central Standard oder Daylight Time
EST oder EDT Eastern Standard oder Sommerzeit
GMT Greenwich Mean Time
HST oder HDT Alaska-Hawaii-Standardzeit oder Sommerzeit
MST oder MDT Mountain Standard oder Sommerzeit
NST Neufundländische Normalzeit
PST oder PDT Pacific Standard oder Sommerzeit
YST oder YDT Yukon Standard oder Sommerzeit

Beispiel

Hier ist ein Beispiel:

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;

Ergebnis:

2030-03-01 08:30:45

Wie bereits erwähnt, wird bei Verwendung dieser Funktion das NLS_DATE_FORMAT Der Parameter muss so eingestellt werden, dass er die 24-Stunden-Zeit anzeigt, also tut dies die erste Zeile im obigen Beispiel. Sie können diese Zeile weglassen, wenn das NLS_DATE_FORMAT Ihrer Sitzung ist Der Parameter verwendet bereits die 24-Stunden-Zeit. Weitere Beispiele zum Festlegen des Datumsformats für die aktuelle Sitzung finden Sie unter Festlegen des Datumsformats Ihrer Sitzung.

Null-Argumente

Wenn irgendein Argument null ist , ist das Ergebnis 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;

Ergebnis:

      1       2       3 
_______ _______ _______ 
null    null    null   

Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null tritt als Ergebnis eines SQL SELECT auf Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Fehlendes Argument

Aufruf von NEW_TIME() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT NEW_TIME()
FROM DUAL;

Ergebnis:

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: