当我尝试执行下面的代码时,它给我一个java.sql.SQLException: ORA-01861: literal does not match format string
错误。“文字不匹配格式字符串”错误
我试图从customer1_details
表中复制一些列值到customer2_details
表。列的数据类型而我试图移动是TIMESTAMP(6)
为TIME_REGISTERED
,DATE_DISCHARGED
列和DATE_OF_BIRTH
列的数据类型是DATE
try
{
Connection conn=Address.getOracleConnection();
int id = 1;
Date dob = null;
Timestamp timereg = null,datedischarged = null;
Statement stmt=conn.createStatement();
ResultSet res=stmt.executeQuery("SELECT TIME_REGISTERED,DATE_DISCHARGED,DATE_OF_BIRTH from customer1_details WHERE customer_id = '"+id+"' ");
if(res.next())
{
timereg=res.getTimestamp("TIME_REGISTERED");
datedischarged=res.getTimestamp("DATE_DISCHARGED");
dob=res.getDate("DATE_OF_BIRTH");
}
String sql1="INSERT INTO customer2_details(TIME_REGISTERED_3,DATE_DISCHARGED_3,DATE_OF_BIRTH,customer_ID) "
+ "VALUES('"+timereg+"','"+datedischarged+"','"+dob+"','"+id+"') ";
PreparedStatement pst=conn.prepareStatement(sql1);
pst.executeUpdate();
pst.close();
conn.close();
}
catch(Exception e)
{ System.out.print(e); }
这将是更有帮助,如果有人提供了答案without using INSERT INTO ... SELECT ... statement
。
为什么不把它当作一个语句:'INSERT INTO ... SELECT ...'? – Barmar 2013-05-04 19:30:16
我认为这个错误意味着Java连接字符串时使用的日期格式与Oracle在解析日期时所能理解的语法不匹配。如果您想这样做,您需要按照Oracle了解的方式明确格式化日期。 – Barmar 2013-05-04 19:32:33
我的实际查询有点复杂,我正在收集多个表中的数据,然后将这些数据插入到customer2_details表中。除了我的问题中提供的以上三列以外的所有其他列不会发生任何错误 – Akki 2013-05-04 19:33:06