0

Java から Oracle にデータを挿入するためにPreparedStatementを使用しています。

以下は私の質問です:

String query ="insert into table_name(ID, Date) values(?,(select to_char(TO_TIMESTAMP_TZ(REPLACE('Wed May 29 09:26:59 IST 2013','IST','Asia/Calcutta'),'Dy Mon DD hh24:mi:ss TZR YYYY'),'Dy Mon DD hh24:mi:ss YYYY') from dual))";
pstmt = con.prepareStatement(query,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setString(1, ID);
pstmt.setString(2, "Fri Aug 02 12:38:35 IST 2013");
pstmt.executeUpdate();

しかし、私は例外を受けています:

java.sql.SQLException: ORA-01858: a non-numeric character was found where a numeric was expected

したがって、任意の提案をいただければ幸いです。

アップデート1

Timestampを設定してみました:

pstmt.setTimestamp(1,Timestamp.valueOf("Fri Aug 02 12:38:35 IST 2013"));

しかし、その後、例外が発生しています:

java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
4

2 に答える 2

0

データベースのフィールドのデータ型がDatetimeタイムスタンプをデータベースに保存することを確認してください。

于 2013-08-02T12:25:44.940 に答える
0

私の提案は、Javaで日付文字列を解析して、

String query ="insert into table_name(ID, Date) values(?,?)";
...
pstmt.setDate(2, date);
于 2013-08-02T12:09:59.893 に答える