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

LOCALTIMESTAMP() Funzione in Oracle

In Oracle Database, il LOCALTIMESTAMP() La funzione restituisce la data e l'ora correnti nel fuso orario della sessione in un valore di tipo di dati TIMESTAMP .

È simile a CURRENT_TIMESTAMP , tranne che CURRENT_TIMESTAMP restituisce un TIMESTAMP WITH TIME ZONE valore.

Sintassi

La sintassi è questa:

LOCALTIMESTAMP [ (timestamp_precision) ]

Dove il timestamp_precision facoltativo argomento specifica la precisione frazionaria di secondo del valore di tempo restituito.

Quando si chiama la funzione senza un argomento, le parentesi devono essere omesse.

Esempio

Ecco un esempio di chiamata della funzione senza specificare la precisione:

SELECT LOCALTIMESTAMP
FROM DUAL;

Risultato:

07/AUG/21 08:49:50.026443000 AM

Questo esempio mostra la data in un formato basato sul valore di NLS_DATE_FORMAT del mio sistema parametro (che è attualmente DD/MON/RR ). Questo parametro deriva il suo valore da NLS_TERRITORY parametro (di cui il mio è AUSTRALIA ).

Abbiamo la possibilità di modificare questi parametri (ad esempio, vedere Come modificare il formato della data nella sessione Oracle).

In alternativa, possiamo usare una funzione come TO_CHAR() per restituire il risultato in un formato diverso.

Esempio:

SELECT TO_CHAR(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Risultato:

2021-08-07 08:50:20

Precisione

Ecco un esempio che specifica la precisione. Questo determina la precisione frazionaria di secondo del valore di tempo restituito.

SELECT LOCALTIMESTAMP(9)
FROM DUAL;

Risultato:

07/AUG/21 08:50:47.203717000 AM

Nota che l'argomento precision deve essere un numero compreso tra 0 e 9.

Ecco cosa succede quando passiamo un valore al di fuori di tale intervallo:

SELECT LOCALTIMESTAMP(10)
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP(10)
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.

Omissione delle parentesi senza specificare la precisione

Come accennato, quando si chiama LOCALTIMESTAMP senza superare la precision argomento, devi omettere le parentesi.

Ecco cosa succede quando includiamo le parentesi senza specificare la precisione:

SELECT LOCALTIMESTAMP()
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP()
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.

Otteniamo lo stesso errore dell'esempio precedente. Oracle Database sta cercando un argomento di precisione compreso tra 0 e 9, ma non ne abbiamo passato nessuno.

Argomento nullo

Lo stesso errore si verifica quando si passa null :

SELECT LOCALTIMESTAMP(null)
FROM DUAL;

Risultato:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP(null)
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.