to_date() returnerar ett datum kl. 00:00:00, så du måste "ta bort" protokollet från datumet du jämför med:
select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
Du vill förmodligen skapa ett index på trunc(es_date) om det är något du gör regelbundet.
Den bokstavliga '27-APR-12' kan misslyckas mycket lätt om standarddatumformatet ändras till något annat. Så se till att du alltid använder to_date() med en korrekt formatmask (eller en ANSI-literal:date '2012-04-27' )
Även om du gjorde rätt när du använde to_date() och utan att förlita sig på omvandling av implicit datatyp har din användning av to_date() fortfarande en subtil fallgrop på grund av formatet 'dd-MON-yy' .
Med en annan språkinställning kan detta lätt misslyckas, t.ex. TO_DATE('27-MAY-12','dd-MON-yy') när NLS_LANG är inställt på tyska. Undvik allt i formatet som kan vara annorlunda på ett annat språk. Med ett fyrsiffrigt årtal och endast siffror t.ex. 'dd-mm-yyyy' eller 'yyyy-mm-dd'