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

NEW_TIME() Funzione in Oracle

In Oracle Database, il NEW_TIME() converte la data da un fuso orario specificato in un altro fuso orario specificato e restituisce il risultato.

Sintassi

La sintassi è questa:

NEW_TIME(date, timezone1, timezone2)

Quindi, la funzione restituisce la data e l'ora nel fuso orario timezone2 quando data e ora nel fuso orario timezone1 sono date .

Nota che prima di utilizzare questa funzione, dovrai impostare il NLS_DATE_FORMAT parametro per visualizzare l'ora 24 ore.

Gli argomenti timezone1 e timezone2 può essere una qualsiasi di queste stringhe di testo:

AST o ADT Ora solare o solare dell'Atlantico
BST o BDT Ora solare o diurna di Bering
CST o CDT Ora solare o solare centrale
EST o EDT Ora solare o solare orientale
GMT Ora di Greenwich
HST o HDT Ora solare o ora legale dell'Alaska-Hawaii
MST o MDT Ora solare o diurna di montagna
NST Ora solare di Terranova
PST o PDT Ora solare o solare del Pacifico
YST o YDT Yukon Standard o Ora legale

Esempio

Ecco un esempio:

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;

Risultato:

2030-03-01 08:30:45

Come accennato, quando si utilizza questa funzione il NLS_DATE_FORMAT il parametro deve essere impostato per visualizzare l'ora di 24 ore, quindi è ciò che fa la prima riga nell'esempio sopra. Puoi omettere questa riga se la tua sessione è NLS_DATE_FORMAT il parametro utilizza già l'ora di 24 ore. Vedi Come impostare il formato della data della sessione per ulteriori esempi di impostazione del formato della data per la sessione corrente.

Argomenti nulli

Se un argomento è null , il risultato è 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;

Risultato:

      1       2       3 
_______ _______ _______ 
null    null    null   

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null si verifica come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Argomento mancante

Chiamando NEW_TIME() con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:

SELECT NEW_TIME()
FROM DUAL;

Risultato:

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: