to_date()
gibt ein Datum um 00:00:00 zurück, also müssen Sie die Minuten von dem Datum, mit dem Sie vergleichen, "entfernen":
select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
Wahrscheinlich möchten Sie einen Index für trunc(es_date)
erstellen wenn Sie das regelmäßig tun.
Der wörtliche '27-APR-12'
kann sehr leicht fehlschlagen, wenn das standardmäßige Datumsformat geändert wird. Stellen Sie also sicher, dass Sie immer to_date()
verwenden mit einer geeigneten Formatmaske (oder einem ANSI-Literal:date '2012-04-27'
)
Obwohl Sie mit der Verwendung von to_date()
richtig gehandelt haben und sich nicht auf die implizite Datentypkonvertierung verlassen, hat Ihre Verwendung von to_date() aufgrund des Formats 'dd-MON-yy'
immer noch eine subtile Falle .
Bei einer anderen Spracheinstellung kann dies leicht fehlschlagen, z. TO_DATE('27-MAY-12','dd-MON-yy')
wenn NLS_LANG auf deutsch eingestellt ist. Vermeiden Sie alles im Format, das in einer anderen Sprache anders sein könnte. Verwenden Sie eine vierstellige Jahreszahl und nur Zahlen, z. 'dd-mm-yyyy'
oder 'yyyy-mm-dd'