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

値が暗黙的に日付形式に変換される方法を理解できません

    文字列から日付への変換ルール> 追加のフォーマットルールを許可します(他の修飾子を適用せずに)。だから:

    • MM MONにも一致します およびMONTH;
    • MON MONTHに一致します (およびその逆);
    • RR RRRRに一致;および
    • 句読点はオプションです。

    だから:

    SELECT TO_DATE( '10AUGUST2016', 'DD-MM-RR'    ) FROM DUAL UNION ALL
    SELECT TO_DATE( '10AUGUST2016', 'DD-MON-RR'   ) FROM DUAL UNION ALL
    SELECT TO_DATE( '10AUGUST2016', 'DD-MONTH-RR' ) FROM DUAL UNION ALL
    SELECT TO_DATE( '10AUG2016',    'DD-MM-RR'    ) FROM DUAL UNION ALL
    SELECT TO_DATE( '10AUG2016',    'DD-MON-RR'   ) FROM DUAL UNION ALL
    SELECT TO_DATE( '10AUG2016',    'DD-MONTH-RR' ) FROM DUAL;
    

    すべて日付2016-08-10T00:00:00を生成します 。

    これを防ぐには、FX フォーマットモデル

    次に:

    SELECT TO_DATE( '10-AUGUST-2016', 'FXDD-MM-RR'    ) FROM DUAL;
    

    提供:ORA-01858: a non-numeric character was found where a numeric was expected 完全に一致するパターンが見つかった場合にのみ一致します(ただし、RR 引き続きRRRRと一致します 。

    はい、オラクルは暗黙的にTO_DATE( '10AUGUST2016', NLS_DATE_FORMAT )を使用しています 変換を行います。

    使用する場合:

    ALTER SESSION SET NLS_DATE_FORMAT = 'FXDD-MM-RR';
    

    その後、挿入は失敗します。




    1. 2つの外部キー、laravelの雄弁なマッピング方法

    2. チャット用のDBスキーマ?

    3. Oracle SQL:複数の列の間で最新の日付を持つ単一の行を選択する

    4. LaravelクエリビルダーWHERENOTIN