當我嘗試執行下面的代碼時,它給我一個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