そのタイプの日付をデータベースに挿入するにはどうすればよいですか? 文字列として宣言する必要がありますか?
いいえ -現在使用している文字列変換も避けるべきです。そのように SQL を動的に構築するべきではありません。これは、SQL インジェクション攻撃、読みにくいコード、および変換の失敗のレシピです。
代わりに、を使用し、次を使用PreparedStatement
してパラメーターを設定しますsetDate
。
// TODO: Closing the statement cleanly in a finally block or try-with-resources
PreparedStatement pst = conn.prepareStatement("INSERT INTO db (day) Values (?)");
pst.setDate(1, new java.sql.Date(d.getTime()));
pst.executeUpdate();
java.sql.Date
は のサブクラスですjava.util.Date
が、多少異なることに注意してください。特定の時点を実際の日付に変換するためにどのタイムゾーンが使用されているかは、私には明確ではありませんでした。ドキュメントはあまり役に立ちません。私の見解では設計上壊れていますが、それは別の問題です。タイムゾーンに使用される - をsetDate
受け入れる別のオーバーロードを使用できます。Calendar
まだすべてが恐ろしく不明確ですが、希望する結果が得られることを願っています。