Aturan Konversi String-to-Date izinkan aturan pemformatan tambahan (tanpa pengubah lain yang diterapkan). Jadi:
MM
juga cocok denganMON
danMONTH
;MON
cocok denganMONTH
(dan sebaliknya);RR
cocok denganRRRR
; dan- Tanda baca bersifat opsional.
Jadi:
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;
Semua menghasilkan tanggal 2016-08-10T00:00:00
.
Anda dapat mencegahnya dengan menggunakan FX
model format
Kemudian:
SELECT TO_DATE( '10-AUGUST-2016', 'FXDD-MM-RR' ) FROM DUAL;
Memberikan:ORA-01858: a non-numeric character was found where a numeric was expected
dan hanya akan cocok di mana kecocokan pola yang tepat ditemukan (walaupun RR
akan tetap cocok dengan RRRR
).
Ya, Oracle secara implisit menggunakan TO_DATE( '10AUGUST2016', NLS_DATE_FORMAT )
untuk melakukan konversi.
Jika Anda menggunakan:
ALTER SESSION SET NLS_DATE_FORMAT = 'FXDD-MM-RR';
Maka penyisipan Anda akan gagal.