java.sql.PreparedStatementで時刻データを代入する際の注意
java.sql.PreparedStatement
で、SQL文に時刻データを代入する際の注意点。
setDate(java.sql.Date date)
のメソッドを使用した場合、引数のjava.sql.Date
のインスタンスがミリ秒まで指定されていても、時間以下の値は全て切り捨てられてしまう。(ドライバが引数の値をSQL DATE値に変換するため。)
時間以下の値も代入したい場合は、setTimestamp(java.sql.Timestamp timestamp)
のメソッドを利用すれば良い。
ちなみにjava.util.Date
から上記2つの方への変換はいずれも以下のように簡単にできる。
java.util.Date date = new java.util.Date();
// java.util.Dateをjava.sql.Dateに変換
new java.sql.Date(date.getTime());
// java.util.Dateをjava.sql.Timestampに変換
new java.sql.Timestamp(date.getTime());