Pesquisa SQL do Oracle para o formato da data
Eu sempre fico confuso com o formato de data na consulta SQL ORACLE e passar minutos juntos para o google, alguém pode me explicar a maneira mais simples de lidar quando temos um formato diferente de data na tabela de banco de dados ?
por exemplo, eu tenho uma coluna de data como ES_DATE, detém dados como 27-abr-12 11.52.48.294030000 AM do tipo de dados TIMESTAMP(6) com Fuso horário LOCAL.
escrevi uma consulta simples para obter dados para esse dia em particular e não me devolve nada. Poder alguém me explicou ?
select * from table
where es_date=TO_DATE('27-APR-12','dd-MON-yy')
ou
select * from table where es_date = '27-APR-12';
2 answers
to_date()
retorna uma data às 00: 00: 00, então você precisa "remover" os minutos da data que você está comparando com:
select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
Você provavelmente quer criar um índice em {[[2]} se isso é algo que você está fazendo regularmente.
O literal '27-APR-12'
pode falhar muito facilmente se o formato de data padrão for alterado para algo diferente. Então certifique-se que você sempre usa to_date()
com uma máscara de formato apropriado (ou um literal ANSI: date '2012-04-27'
)
Apesar de teres feito bem ao usar to_date()
e não contando com a conversão do tipo de dados implict, o seu uso de to_date () ainda tem uma desvantagem sutil por causa do formato 'dd-MON-yy'
.
Com uma configuração diferente da língua, isto pode facilmente falhar, por exemplo TO_DATE('27-MAY-12','dd-MON-yy')
quando o NLS_LANG está definido para o alemão. Evite qualquer coisa no formato que possa ser diferente em uma língua diferente. Utilizando um ano de quatro dígitos e apenas números, por exemplo 'dd-mm-yyyy'
ou 'yyyy-mm-dd'
Se estiver a usar o mesmo formato de data e tiver a opção consultar onde a data está no oracle:
select count(id) from Table_name where TO_DATE(Column_date)='07-OCT-2015';
To_DATE fornecido pela oracle