Is there anyway to get a java.time (new in Java 8) compatible time class out of a ResultSet
?
I am aware you can use ResultSet
's getDate
or getTimestamp
but these method return java.sql.Date
/ java.sql.Timestamp
objects which are now deprecated so it seems like bad practice to use them in order to create a ZonedDateTime
or similar.
Most database vendors don't support JDBC 4.2 yet. This specification says that the new
java.time
-types likeLocalDate
will/should be supported using the existing methodssetObject(...)
andgetObject()
. No explicit conversion is required and offered (no API-change).A workaround for the missing support can be manual conversion as described on the Derby-mailing list.
Something like:
As you can see, these conversions use the non-deprecated types
java.sql.Date
etc., see also the javadoc.New Methods On
Timestamp
Java 8 includes new methods on the
java.sql.Timestamp
class to convert to and from java.time objects. These convenience methods are a stop-gap measure until JDBC drivers can be updated for the new data types.toInstant
toLocalDateTime
valueOf
from
Ditto For
Date
&Time
The
java.sql.Date
andjava.sql.Time
classes have similar java.time conversion methods added in Java 8 as well.