Problema:
Você deseja obter a data atual (sem a hora) no Oracle.
Solução 1 (se você não se importar com os zeros como hora):
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Por exemplo, se você executasse essa consulta em 16 de junho de 2021, a tabela de resultados ficaria assim:
data_atual |
---|
2021-06-16T00:00:00Z |
Discussão:
O Oracle não possui um tipo de dados que armazene apenas a data sem a hora. Mas se você não se importa com os zeros no lugar da hora, você pode simplesmente armazenar uma data em um
DATE
tipo de dados (que armazena a data e a hora no Oracle). Para obter a data e hora atuais como DATE
valor, você pode simplesmente usar CURRENT_DATE
. Para se livrar da hora (e ter zeros), você precisa truncar a data:SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Solução 2 (se você quiser apenas a data e não zeros no lugar da hora):
SELECT TO_CHAR(CURRENT_DATE, 'yyyy-MM-dd') AS current_date FROM dual;
Por exemplo, se você executasse essa consulta em 16 de junho de 2021, a tabela de resultados ficaria assim:
data_atual |
---|
2021-06-16 |
Discussão:
Para obter um texto de
VARCHAR2
tipo que armazena uma data, você pode usar o TO_CHAR()
função no Oracle. Você precisa especificar o carimbo de data/hora a ser convertido como o primeiro argumento e no formato em que deseja armazenar a data como o segundo argumento. Como você deseja a data atual, o primeiro argumento é
CURRENT_DATE
. O segundo argumento é sua escolha. Por exemplo, 'yyyy-MM-dd'
significa 'ano-mês-dia', onde o mês é numérico em vez de texto. A tabela abaixo apresenta alguns formatos de data de exemplo e a respectiva saída para a data 16 de junho de 2021. formato de data | resultado |
---|---|
'AAAA-MM-DD' | 2021-06-16 |
'AAAA/MM/DD' | 2021/06/16 |
'AAAA MM DD' | 2021 06 16 |
'DD-MON-AAAA' | 16-JUN-2021 |
'DD-MON-AA' | 16-JUN-21 |
'FMMês DD, AAAA' | 16 de junho de 2021 |
Você pode ler mais sobre formatos de data aqui.