答案 0 :(得分:2)
轻松修复::
INSERT INTO t(dob) VALUES(DATE '2015-12-17');
答案 1 :(得分:1)
假设这是一个基于ORA-01843 error message的Oracle问题,那么问题似乎出在错误提示的日期格式中。
在提供的示例中,日期“ 6-3-2012”是指“ 2012年3月3日”还是“ 2012年6月6日”?答案就在NLS_DATE_FORMAT参数之内。
开箱即用的Oracle日期格式为DD-MON-RR。因此,您更正的日期格式为'03 -MAR-12'或'06 -JUN-12'。如果未更改NLS_DATE_FORMAT。
答案 2 :(得分:0)
请不要尝试在日期列中插入字符串!如果您有字符串,请使用具有明确日期格式的to_date
函数(并使用4位数字的日期)。
依靠nls_date_format
隐式转换字符串只是在麻烦(就像您刚才所做的那样),它可以很容易地更改,即使某些应用程序也会自己更改它。
日期文字(date '2015-12-17'
https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements003.htm#BABGIGCJ)始终使用相同的日期格式,因此对于临时语句来说可能没问题,但是您需要注意,它是按名称表示的文字,而按性质表示的则是文字。它们不支持绑定变量,因此您最终将编写不可共享的SQL来消耗共享池。