'10-MAY-20'
ist kein Datum, sondern eine Zeichenfolge. Ein Datum hat kein Format, basierend auf Ihren gebietsschemaspezifischen NLS-Einstellungen wird es in einem für Menschen lesbaren Format mit TO_CHAR
angezeigt und richtige Formatmaske.
Außerdem sollten Sie die Verwendung des zweistelligen YY
vermeiden Darstellung für Jahr, es ist der ganze Grund Y2K Fehler gestartet. Verwenden Sie immer YYYY
formatieren.
Um eine Zeichenkette in ein Datum umzuwandeln:
Verwenden Sie TO_DATE
und entsprechende Formatmaske:
where date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')
and date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')
Oder verwenden Sie ANSI date literal
das das feste Format 'YYYY-MM-DD'
verwendet :
where date_col > DATE '2020-05-10' and date < DATE '2020-05-13'
Eine andere Sache, DATE
ein von Oracle reserviertes Wort ist, können Sie die Dokumentation . Möglicherweise verwenden Sie Bezeichner in Anführungszeichen "date"
d.h. die Verwendung von doppelten Anführungszeichen um das reservierte Wort.
Das liegt wahrscheinlich daran, dass Ihre NLS-Einstellungen von SQL Developer auf 'DD-MON-YY'
eingestellt sind , wenn Sie also das Datum in diesem Format übergeben, wird es implizit in das Datum konvertiert. Wenn Sie jedoch das Format ändern, funktioniert es nicht:
alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';