I'm surprised that java.sql.Date has a method toLocalDate().
java.util.Date or java.time.Instant don't have comparable methods. It seems that in java.time, a ZoneId must always be provided to obtain "LocalFoo" or "OffsetBar".
From the javadoc of java.sql.Date#toLocalDate():
Converts this Date object to a LocalDate. The conversion creates a LocalDate that represents the same date value as this Date in local time zone
Which timezone is "local time zone"? Does it depend on database or JVM settings?