to_date()
restituisce una data alle 00:00:00, quindi devi "rimuovere" i minuti dalla data con cui stai confrontando:
select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
Probabilmente vuoi creare un indice su trunc(es_date)
se è qualcosa che stai facendo regolarmente.
Il letterale '27-APR-12'
può fallire molto facilmente se il formato della data predefinito viene modificato in qualcosa di diverso. Quindi assicurati di utilizzare sempre to_date()
con una maschera di formato appropriata (o un valore letterale ANSI:date '2012-04-27'
)
Anche se hai fatto bene a usare to_date()
e non basandosi sulla conversione implicita del tipo di dati, il tuo utilizzo di to_date() ha ancora una sottile trappola a causa del formato 'dd-MON-yy'
.
Con un'impostazione di lingua diversa questo potrebbe facilmente fallire, ad es. TO_DATE('27-MAY-12','dd-MON-yy')
quando NLS_LANG è impostato su tedesco. Evita qualsiasi cosa nel formato che potrebbe essere diversa in una lingua diversa. Utilizzando un anno a quattro cifre e solo numeri, ad es. 'dd-mm-yyyy'
o 'yyyy-mm-dd'