to_date()
retorna uma data às 00:00:00, então você precisa "remover" os minutos da data que você está comparando:select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
Você provavelmente quer criar um índice em
trunc(es_date)
se isso é algo que você está fazendo em uma base regular. O literal
'27-APR-12'
pode falhar muito facilmente se o formato de data padrão for alterado para algo diferente. Portanto, certifique-se de usar sempre to_date()
com uma máscara de formato adequada (ou um literal ANSI:date '2012-04-27'
) Embora você tenha feito certo ao usar
to_date()
e não depender de conversão implícita de tipo de dados, seu uso de to_date() ainda tem uma armadilha sutil devido ao formato 'dd-MON-yy'
. Com uma configuração de idioma diferente, isso pode falhar facilmente, por exemplo.
TO_DATE('27-MAY-12','dd-MON-yy')
quando NLS_LANG é definido como alemão. Evite qualquer coisa no formato que possa ser diferente em um idioma diferente. Usando um ano de quatro dígitos e apenas números, por exemplo. 'dd-mm-yyyy'
ou 'yyyy-mm-dd'