to_date()
vrátí datum v 00:00:00, takže musíte "odstranit" minuty z data, se kterým porovnáváte:
select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
Pravděpodobně budete chtít vytvořit index na trunc(es_date)
pokud je to něco, co děláte pravidelně.
Doslovný '27-APR-12'
může velmi snadno selhat, pokud se výchozí formát data změní na jiný. Ujistěte se tedy, že vždy používáte to_date()
se správnou maskou formátu (nebo literálem ANSI:date '2012-04-27'
)
Ačkoli jste udělali správně, když jste použili to_date()
a nespoléháme se na implicitní konverzi datových typů, vaše použití to_date() má stále jemné úskalí kvůli formátu 'dd-MON-yy'
.
Při jiném nastavení jazyka to může snadno selhat, např. TO_DATE('27-MAY-12','dd-MON-yy')
když je NLS_LANG nastaveno na němčinu. Vyhněte se všemu ve formátu, který by se mohl v jiném jazyce lišit. Použití čtyřmístného roku a pouze čísel, např. 'dd-mm-yyyy'
nebo 'yyyy-mm-dd'