web-dev-qa-db-ja.com

日付だけでなく、Javaを使用して完全な日付と時刻のSQLを設定するにはどうすればよいですか?

Javaを使用してデータベースにタイムスタンプを設定しようとしていますが、テーブルで取得できるのは日付だけで、時間はありません(つまり、「2010-09-09 00:00:00」のようになります)。

Mysqlデータベースでdatetimeフィールドを使用しています( 表示 その datetimeはtimestampよりも一般的です であるため)。日付を設定する私のコードは次のようになります。

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)")
Java.util.Date today = new Java.util.Date();
Java.sql.Date timestamp = new Java.sql.Date(today.getTime());
ps.setDate(1, timestamp);
ps.executeUpdate();

時刻を含めるように日付を設定するにはどうすればよいですか?

編集:以下のようにコードを変更すると、日付と時刻の両方が設定されます。

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)")
Java.util.Date today = new Java.util.Date();
Java.sql.Timestamp timestamp = new Java.sql.Timestamp(today.getTime());
ps.setTimestamp(1, timestamp);
ps.executeUpdate();
23
Adam Morris

_Java.sql.Timestamp_およびsetTimestamp(int, Timestamp)を使用します。 _Java.sql.Date_は、格納されている列のタイプに関係なく、日付のみです。

28
ColinD

何を使用する必要があるのか​​正確にはわかりませんが

ps.setDate();

日付の列タイプが必要です。つまり、それはそれを正規化し、時間を取り除きます。

試してみてください

ps.setTimetamp();
4
Brad Goss