to_date()
retourneert een datum om 00:00:00, dus u moet de minuten "verwijderen" van de datum waarmee u vergelijkt:
select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
U wilt waarschijnlijk een index maken op trunc(es_date)
als dat iets is dat u regelmatig doet.
De letterlijke '27-APR-12'
kan heel gemakkelijk mislukken als het standaard datumformaat wordt gewijzigd in iets anders. Zorg er dus voor dat je altijd to_date()
. gebruikt met een correct formaatmasker (of een ANSI-letterlijk:date '2012-04-27'
)
Hoewel je er goed aan gedaan hebt to_date()
te gebruiken en niet afhankelijk van impliciete conversie van gegevenstypes, heeft uw gebruik van to_date() nog steeds een subtiele valkuil vanwege het formaat 'dd-MON-yy'
.
Met een andere taalinstelling kan dit gemakkelijk mislukken, b.v. TO_DATE('27-MAY-12','dd-MON-yy')
wanneer NLS_LANG is ingesteld op Duits. Vermijd alles in het formaat dat in een andere taal anders kan zijn. Een jaartal van vier cijfers gebruiken en alleen cijfers, b.v. 'dd-mm-yyyy'
of 'yyyy-mm-dd'