to_date()
devuelve una fecha a las 00:00:00, por lo que debe "eliminar" los minutos de la fecha con la que está comparando:
select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
Probablemente quieras crear un índice en trunc(es_date)
si eso es algo que está haciendo sobre una base regular.
El literal '27-APR-12'
puede fallar muy fácilmente si el formato de fecha predeterminado se cambia a algo diferente. Así que asegúrese de usar siempre to_date()
con una máscara de formato adecuada (o un literal ANSI:date '2012-04-27'
)
Aunque hiciste bien al usar to_date()
y al no depender de la conversión implícita de tipos de datos, su uso de to_date() todavía tiene un escollo sutil debido al formato 'dd-MON-yy'
.
Con una configuración de idioma diferente, esto podría fallar fácilmente, p. TO_DATE('27-MAY-12','dd-MON-yy')
cuando NLS_LANG se establece en alemán. Evite cualquier cosa en el formato que pueda ser diferente en un idioma diferente. Usando un año de cuatro dígitos y solo números, p. 'dd-mm-yyyy'
o 'yyyy-mm-dd'