sql >> データベース >  >> RDS >> Oracle

2つの日付を使用したSQLクエリ

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


    1. to_sqlを使用してパンダデータフレームをOracleデータベースに書き込む方法は?

    2. SQLServerとOracleの「ユーザー」の違い

    3. MySQLでデータベースとテーブルを作成および削除する方法

    4. MySQLクエリでタイムスタンプを日付に変換する