No banco de dados Oracle, o
LOCALTIMESTAMP()
A função retorna a data e hora atuais no fuso horário da sessão em um valor do tipo de dados TIMESTAMP
. É semelhante a
CURRENT_TIMESTAMP
, exceto que CURRENT_TIMESTAMP
retorna um TIMESTAMP WITH TIME ZONE
valor. Sintaxe
A sintaxe fica assim:
LOCALTIMESTAMP [ (timestamp_precision) ]
Onde o opcional
timestamp_precision
O argumento especifica a precisão fracionária de segundo do valor de tempo retornado. Ao chamar a função sem um argumento, os parênteses devem ser omitidos.
Exemplo
Aqui está um exemplo de como chamar a função sem especificar a precisão:
SELECT LOCALTIMESTAMP
FROM DUAL;
Resultado:
07/AUG/21 08:49:50.026443000 AM
Este exemplo exibe a data em um formato baseado no valor do
NLS_DATE_FORMAT
do meu sistema parâmetro (que atualmente é DD/MON/RR
). Este parâmetro deriva seu valor do NLS_TERRITORY
parâmetro (dos quais o meu é AUSTRALIA
). Temos a opção de alterar esses parâmetros (por exemplo, consulte Como alterar o formato de data em sua sessão Oracle).
Alternativamente, podemos usar uma função como
TO_CHAR()
para retornar o resultado em um formato diferente. Exemplo:
SELECT TO_CHAR(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
Resultado:
2021-08-07 08:50:20
Precisão
Aqui está um exemplo que especifica a precisão. Isso determina a precisão fracionária de segundo do valor de tempo retornado.
SELECT LOCALTIMESTAMP(9)
FROM DUAL;
Resultado:
07/AUG/21 08:50:47.203717000 AM
Observe que o argumento de precisão deve ser um número entre 0 e 9.
Veja o que acontece quando passamos um valor fora desse intervalo:
SELECT LOCALTIMESTAMP(10)
FROM DUAL;
Resultado:
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.
Omitir os parênteses sem especificar a precisão
Como mencionado, ao chamar
LOCALTIMESTAMP
sem passar a precision
argumento, você precisa omitir os parênteses. Veja o que acontece quando incluímos os parênteses sem especificar a precisão:
SELECT LOCALTIMESTAMP()
FROM DUAL;
Resultado:
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.
Obtemos o mesmo erro do exemplo anterior. O Oracle Database está procurando um argumento de precisão entre 0 e 9, mas não passamos nenhum.
Argumento nulo
O mesmo erro ocorre ao passar
null
:SELECT LOCALTIMESTAMP(null)
FROM DUAL;
Resultado:
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.