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: