0

以下は私のコードスニペットです、

for(int i = 0;i < 24;i++) {
Calendar calHourlyObj = new GregorianCalendar(2013,05,05);
calHourlyObj.add(Calendar.HOUR_OF_DAY, i);
java.sql.Date sqldate1 = new java.sql.Date((calHourlyObj.getTime()).getTime());
System.out.println("sqldate1"+sqldate1);
}

ここでは、「calHourlyObj」の特定の日付範囲のカレンダー オブジェクトがあり、ループ内でその日のすべての時間にカレンダー オブジェクトを設定しています。この calHourlyObj を java.util.Date に割り当てると、完全なタイムスタンプで日付が取得されます。しかし、この日付オブジェクトを、java.sql.Date 形式でのみ日付を受け入れるストアド プロシージャに渡す必要があります。calHourlyObj を java.sql.Date に割り当てると、タイムスタンプが失われ、毎回日付が最初の 1 時間に設定します。

完全なタイムスタンプで java.sql.Date を取得するにはどうすればよいですか。

あるいは、私は試しました

java.sql.Timestamp sqldate1 = new java.sql.Timestamp((calHourlyObj.getTime()).getTime());
cstmt.setTimeStamp(1,sqldate1 )

java.sql.Timestamp sqldate1 = new java.sql.Timestamp((calHourlyObj.getTime()).getTime());
cstmt.setObject(1,sqldate1,TYPES.Oracle);

しかし、ここではコンパイル エラーは発生しません。しかし、ストアド プロシージャは期待どおりに動作しません。完全なタイムスタンプで java.sql.Date オブジェクトを取得するにはどうすればよいですか?

4

1 に答える 1

0

タイプを指定して列を作成する必要がありTIMESTAMP、OracleDATEは 2 番目のみに解決します。本当にミリ秒の精度が必要ですか? あなたの OJDBC バージョンは何ですか?

とにかく、やることsetTimestamp(...,new Timestamp(System.currentMillis()))は正しいことです。

于 2013-08-28T07:20:50.763 に答える