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

ORA-01821:ISO8601の日付と現地時間の日付形式が認識されないエラー

    2つの問題があります:TO_DATE タイムゾーンコンポーネントまたは秒の小数部を認識しないため、タイムゾーンと.sを使用してタイムスタンプに変換する必要があります。 とにかく小数秒を表す方法ではありません。.ffが必要です。 。有効なフォーマットモデルドキュメントに示されています 。

    それらをまとめると、次のことができます。

    SELECT TO_TIMESTAMP_TZ ('2015-08-26T05:46:30.488+0100',
     'YYYY-MM-DD"T"hh24:mi:ss.ffTZHTZM')
    FROM DUAL;
    
    TO_TIMESTAMP_TZ('2015-08-26T05:46:30.488+0100','YYYY-MM-DD"T"HH24:MI:SS.FFTZHTZ
    -------------------------------------------------------------------------------
    26-AUG-15 05.46.30.488000000 +01:00                                             
    

    本当に日付として使用する場合は、タイムゾーン情報をどのように処理するかを決定する必要があります。現地時間であると想定するか(基本的に無視してください)、UTCまたはその他のタイムゾーンに変換します。ただし、タイムゾーン付きのタイムスタンプとして保持することをお勧めします。



    1. MySQLLEFTJOIN複数テーブルのロジックの問題

    2. テスト用のHSQLに欠落しているシーケンス

    3. 近くのタイムスタンプに基づいて2つのテーブルを結合します

    4. SQL Server:初心者向けの便利なヒント