Java ORACLE 11g不允许在日期列中插入/更新字符串文字日期

Java ORACLE 11g不允许在日期列中插入/更新字符串文字日期,java,jdbc,oracle11g,Java,Jdbc,Oracle11g,我刚从Oracle10g转换到Oracle11g。突然,一些插入日期列的Oracle java类停止工作。我将列出10G和11G中哪些可用,哪些不可用 实际错误:Oracle11gJDBC 从双返回中选择sysdate 2014-03-14 14:44:58.0 更新用户将expirationdate=设置为_日期'2014-06-13','YYYY-MM-DD',其中userId='NBKVLJN'成功 更新用户集lastModifiedDate=sysdate,其中userId='NBKVL

我刚从Oracle10g转换到Oracle11g。突然,一些插入日期列的Oracle java类停止工作。我将列出10G和11G中哪些可用,哪些不可用

实际错误:Oracle11gJDBC

从双返回中选择sysdate 2014-03-14 14:44:58.0 更新用户将expirationdate=设置为_日期'2014-06-13','YYYY-MM-DD',其中userId='NBKVLJN'成功 更新用户集lastModifiedDate=sysdate,其中userId='NBKVLJN'成功 更新用户设置expirationdate='2014-06-13',其中userId='NBKVLJN'失败 err=java.sql.SQLDataException:ORA-01861:文本与格式字符串不匹配
上述相同的顺序在所有情况下都适用于Oracle 10g。

我被告知在为Oracle构建SQL语句字符串时始终使用to_DATE函数

实际上,我很惊讶选项4在10g中起作用!也许这是一个已经修复的bug


也许在10g数据库的表中,expirationdate列是一个VARCHAR2而不是一个日期?

您没有向我们显示实际的Java代码。但4是糟糕的编码实践,因为您依赖于隐式数据类型转换字符串,这是一个糟糕的想法。Java中的Anywy使用PreparedStatement和Java.sql.Timestamp或Java.sql.Date的实例来更新数据库中的日期列。不要为日期值传递字符串。您也不会向我们显示列定义。