java.sql.Date
aと aの 2 つのオブジェクトがありjava.sql.Time
ます。
それらを単一にマージする最良の方法は何java.util.Date
ですか?
データベースでは、これらの列は別々に保存されます。私はJDBCrs.getDate("Date")
とrs.getTime("Time");
.
ミリ秒を持ち越さないことを除いて、 istovatis による答えは正しいです。現代の答えに貢献したいと思います。java.sql.Date
とjava.sql.Time
はかなり時代遅れになっていますが、それらに代わるものであるLocalDate
とLocalTime
クラスを使用すると、タスクがはるかに簡単になります。Java 8 以降およびJDBC 4.2 以降を使用していると仮定すると、結果セットからこれらの型を取得して結合します。
LocalDate date = rs.getObject("Date", LocalDate.class);
LocalTime time = rs.getObject("Time", LocalTime.class);
LocalDateTime dateTime = date.atTime(time);
SQL の結果セットに直接アクセスしたり、変更できないレガシー API から取得java.sql.Date
したりできない場合は、最新の型に変換してから、同じ方法でマージすることをお勧めします。java.sql.Time
LocalDate date = sqlDate.toLocalDate();
LocalTime time = sqlTime.toLocalTime();
LocalDateTime dateTime = date.atTime(time);
を要求しましたjava.util.Date
。そのクラスもかなり古いので、上記のコードの を使用することをお勧めします (または、使用目的に応じてまたはにLocalDateTime
変換することもできます)。変更できない他のレガシー API が必要な場合は、次のように変換します。ZonedDateTime
Instant
Date
Instant inst = dateTime.atZone(ZoneId.systemDefault()).toInstant();
java.util.Date utilDate = java.util.Date.from(inst);
レガシー API にTimestamp
オブジェクトが必要な場合は、さらに簡単です。
Timestamp ts = Timestamp.valueOf(dateTime);
リンク: Oracle チュートリアル: Date Timeの使用方法を説明しますjava.time
。
どちらにも時間と曜日があるため、次のようなことができます。
Date d = new Date(2013, 11, 23);
Time t = new Time(23, 45, 45);
d.setMinutes(t.getMinutes());
d.setHours(t.getHours());
d.setSeconds(t.getSeconds());