文字列から日付への変換ルール> 追加のフォーマットルールを許可します(他の修飾子を適用せずに)。だから:
-
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';
その後、挿入は失敗します。