When retrieving a java.sql.Timestamp from a database via JDBC 4.1 or earlier, how does one obtain/convert to a java.time object?
Neither of the open-source JDBC drivers for Postgres is JDBC 4.2 compliant yet, so I'm looking for a way to use use java.time with JDBC 4.1.
By using the driver with Java 8 and later, you should automatically pick up some methods on your java.sql.Timestamp
object for free. Both java.sql.Time
and java.sql.Date
have similar conversion methods.
Namely, to convert from java.sql to java.time you are looking for:
To go the other direction, from java.time to java.sql, use the new static methods:
Timestamp.from(instant)
Timestamp.valueOf(localDateTime)
Date.valueOf(localDate)
Time.valueOf(localTime)
Example:
preparedStatement.setTimestamp( 2, Timestamp.from(instant) );