to_date()
renvoie une date à 00:00:00, vous devez donc "supprimer" les minutes de la date à laquelle vous comparez :
select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
Vous voulez probablement créer un index sur trunc(es_date)
si c'est quelque chose que vous faites régulièrement.
Le littéral '27-APR-12'
peut échouer très facilement si le format de date par défaut est changé en quelque chose de différent. Assurez-vous donc de toujours utiliser to_date()
avec un masque de format approprié (ou un littéral ANSI :date '2012-04-27'
)
Bien que vous ayez bien fait d'utiliser to_date()
et ne reposant pas sur la conversion de type de données implicite, votre utilisation de to_date() présente toujours un piège subtil à cause du format 'dd-MON-yy'
.
Avec un paramètre de langue différent, cela pourrait facilement échouer, par ex. TO_DATE('27-MAY-12','dd-MON-yy')
lorsque NLS_LANG est défini sur allemand. Évitez tout ce qui, dans le format, pourrait être différent dans une autre langue. En utilisant une année à quatre chiffres et uniquement des chiffres, par ex. 'dd-mm-yyyy'
ou 'yyyy-mm-dd'