to_date()
returnerer en dato kl. 00:00:00, så du skal "fjerne" referatet fra den dato, du sammenligner med:
select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
Du vil sandsynligvis oprette et indeks på trunc(es_date)
hvis det er noget du laver regelmæssigt.
Den bogstavelige '27-APR-12'
kan fejle meget nemt, hvis standarddatoformatet ændres til noget andet. Så sørg for at du altid bruger to_date()
med en korrekt formatmaske (eller en ANSI-literal:date '2012-04-27'
)
Selvom du gjorde rigtigt ved at bruge to_date()
og ikke afhængig af impliceret datatypekonvertering, har din brug af to_date() stadig en subtil faldgrube på grund af formatet 'dd-MON-yy'
.
Med en anden sprogindstilling kan dette let fejle, f.eks. TO_DATE('27-MAY-12','dd-MON-yy')
når NLS_LANG er sat til tysk. Undgå alt i formatet, der kan være anderledes på et andet sprog. Ved at bruge et firecifret årstal og kun tal f.eks. 'dd-mm-yyyy'
eller 'yyyy-mm-dd'