オブジェクトがjava.util.Date
あり、それを MySQL の日時フィールドに形式で挿入する必要がありUTC
ます。
java.util.Date date = myDateFromSomewhereElse;
PreparedStatement prep = con.prepareStatement(
"INSERT INTO table (t1, t2) VALUES (?,?)");
java.sql.Timestamp t = new Timestamp(date.getTime());
prep.setTimestamp(1, t, Calendar.getInstance(TimeZone.getTimeZone("PST"));
prep.setTimestamp(2, t, Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(prep.toString());
これにより、準備された SQL ステートメント文字列が得られます。
INSERT INTO table (t1, t2) VALUES ('2012-05-09 11:37:08','2012-05-09 11:37:08');
返されるタイムスタンプは、指定したタイムゾーンに関係なく同じタイムスタンプです。指定したタイムゾーンを持つ Calendar オブジェクトを無視しています。何が起こっていて、何が間違っていますか?