No need to convert
Like others have said in comments, PostgreSQL's JDBC driver now supports JDBC 4.2 including Java 8 Time API support. We can exchange java.time objects directly with the database.
https://jdbc.postgresql.org/documentation/head/8-date-time.html
So no need to convert, no need to ever use the java.sql types again. Use only their replacements in the java.time package as shown in this list.
PostgreSQL™ Java SE 8 (java.time)
DATE LocalDate
TIME [ WITHOUT TIMEZONE ] LocalTime
TIMESTAMP [ WITHOUT TIMEZONE ] LocalDateTime
TIMESTAMP WITH TIMEZONE OffsetDateTime or Instant
This can be retrieved via ResultSet::getObject
ResultSet rs = ...;
while (rs.next()) {
LocalDate localDate = rs.getObject(1, LocalDate.class));
}
Store a java.time object by calling PreparedStatement::setObject
.
myPreparedStatement.setObject( … , myInstant ) ;