java.sql日時クラス↔Date And Time API系の変換
「Timestamp」「java.sql.Date」「java.sql.Time」の変換手順をまとめる。
Table of Contents
この記事は最終更新から3年以上経過しています。
執筆時バージョン
Java | Java SE 8 |
java.util.DateやCaldnarにおける変換はこちら→リンク。JavaSE8現在ではJDBCがDate And Time APIに対応していないため、場合によっては自力で対応する。

Figure 1. sql日時クラスからDateTimeAPIへの変換
java.sqlの日時クラスの変換は、各クラスによって考え方が異なる。
「Timesatmp」についてはjava.util.DateやCalendarクラスと同様に、Instantを用いた変換が可能。加えてLocalDateTimeへの直接変換も可能。
「java.sql.Date」「java.sql.Time」はnstantを用いた変換ができない。継承関係からいうとjava.util.Dateを継承しているのでtoInstant()メソッドはあるが、UnsupportedOperationExceptionになるので要注意。 代わりに「LocalDate」「LocaTime」への直接変換が用意されている。
Timesatmpの変換
Timesatmp↔Instantの変換
java.util.DateやCalendarクラスと同様に、Instantを用いた変換が可能。
Timesatmp→Instant
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
Instant instant = timestamp.toInstant();
Instant→Timesatmp
Instant instant = Instant.now();
Timestamp timestamp = Timestamp.from(instant);
Timesatmp↔LocalDateTimeの変換
toLocalDateTime()とvalueOf()で相互変換可能。
Timesatmp→LocalDateTime
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
LocalDateTime localDateTime = timestamp.toLocalDateTime();
LocalDateTime→Timesatmp
LocalDateTime localDateTime = LocalDateTime.now();
Timestamp timestamp = Timestamp.valueOf(localDateTime);
java.sql.Date↔LocalDateの変換
toLocalDate()とvalueOf()で相互変換可能。toInstant()してはいけない。
java.sql.Date→LocalDate
java.sql.Date javaSqlDate = new java.sql.Date(System.currentTimeMillis());
LocalDate localDate = javaSqlDate.toLocalDate();
LocalDate→java.sql.Date
LocalDate localDate = LocalDate.now();
java.sql.Date javaSqlDate = java.sql.Date.valueOf(localDate);
java.sql.Time↔LocalTimeの変換
toLocalTime()とvalueOf()で相互変換可能。toInstant()してはいけない。
java.sql.Time→LocalTime
java.sql.Time javaSqlTime = new java.sql.Time(System.currentTimeMillis());
LocalTime localTime = javaSqlTime.toLocalTime();
LocalTime→java.sql.Time
LocalTime localTime = LocalTime.now();
java.sql.Time javaSqlTime = java.sql.Time.valueOf(localTime);
Appendix B: 改訂履歴
-
v1.0, 2016-07-13: 初稿