'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';