Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL-Abfrage für das Datumsformat

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'