1

sysdateをプロシージャに渡したい。以下は私のコードスニペットです

 DateFormat dateFormat = new SimpleDateFormat("mm/dd/yyyy");
                                           Date date = new Date();
String insertquery="{ call sp_process_job (?,?,?) }";

                    cs = con.prepareCall(insertquery.toString());
                    cs.setString(1,id);
                    cs.setString(2,host);
                    cs.setDate(19,(java.sql.Date) date);
                                          cs.execute();
                          con.commit();

ストアドプロシージャ

create procedure sp_process_job (@request_id varchar(25),@host varchar(20),@created_on varchar(25)) as

begin

set dateformat mdy
SELECT CAST(@created_on as datetime)
insert into t_job_details(request_id,host,created_on,run_date) 
                values(@request_id,@host,@created_on)

end

このエラーが発生する

java.util.Dateをjava.sql.Dateにキャストすることはできません。

4

1 に答える 1

1

2番目は最初のサブクラスであるため、キャストjava.util.Dateすることはできません。java.sql.Date

あなたができること:

cs.setDate(19, new java.sql.Date(date.getTime()));

java.sql.Dateそして、それは月、日、年以外のすべてがゼロになることを忘れないでください。java.sql.Datejavadocが言うように:

SQL DATEの定義に準拠するにはjava.sql.Date、インスタンスが関連付けられている特定のタイムゾーンで時間、分、秒、およびミリ秒をゼロに設定することにより、インスタンスによってラップされるミリ秒値を「正規化」する必要があります。

于 2012-06-04T04:28:54.090 に答える