'10-MAY-20' 日付ではなく、文字列です。日付には形式がありません。ロケール固有のNLS設定に基づいて、TO_CHARを使用して人間が読める形式で表示されます。 そして適切なフォーマットマスク。
また、2桁のYYの使用は避けてください。 年の表現、それが Y2Kの理由です バグが始まりました。常にYYYYを使用してください フォーマット。
文字列を日付に変換するには:
TO_DATEを使用する および適切なフォーマットマスク:
where date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')
and date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')
または、ANSI date literalを使用します 固定形式の'YYYY-MM-DD'を使用します :
where date_col > DATE '2020-05-10' and date < DATE '2020-05-13'
もう1つ、DATE はOracleの予約語であり、ドキュメント 。おそらく、引用された識別子を使用しています "date" つまり、予約語を二重引用符で囲みます。
これは、SQLDeveloperのNLS設定が'DD-MON-YY'に設定されていることが原因である可能性があります。 したがって、その形式で日付を渡すと、日付への暗黙的な変換は行われません。ただし、形式を変更しても機能しません:
alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';