4

以下のコードを実行しようとすると、java.sql.SQLException: ORA-01861: literal does not match format stringエラーが発生します。

列の値の一部をテーブルからcustomer1_detailsテーブルにコピーしようとしていcustomer2_detailsます。移動しようとしている列のデータ型は列TIMESTAMP(6)TIME_REGISTEREDで、DATE_DISCHARGED列のデータ型DATE_OF_BIRTHDATE

    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

4

3 に答える 3

2

次のようなクエリを使用して、1 つのステートメントで実行できます。

"INSERT INTO customer2_details (TIME_REGISTERED_3,DATE_DISCHARGED_3,DATE_OF_BIRTH,customer_ID)
SELECT TIME_REGISTERED,DATE_DISCHARGED,DATE_OF_BIRTH, customer_id
from customer1_details WHERE customer_id = '"+id+"' "
于 2013-05-04T19:41:45.480 に答える