如何将java.sql.Date对象转换为java.time.LocalDateTime对象
java.sql.Date 转换为 java.time.LocalDateTime 方案
java.sql.Date对应SQL标准的DATE类型,仅存储年月日信息,无时分秒部分,可通过以下两种方式完成转换:
方案1(JDBC 4.2及以上版本推荐)
直接调用java.sql.Date内置的toLocalDate()方法转换为LocalDate,再拼接初始时间得到LocalDateTime:
// sqlDate为你已有的java.sql.Date对象 LocalDateTime localDateTime = sqlDate.toLocalDate().atStartOfDay();
方案2(兼容低版本JDBC)
基于getTime()方法获取毫秒值,借助java.util.Date中转完成转换:
// sqlDate为你已有的java.sql.Date对象 java.util.Date utilDate = new java.util.Date(sqlDate.getTime()); LocalDateTime localDateTime = utilDate.toInstant() .atZone(ZoneId.systemDefault()) .toLocalDateTime();
注意事项
- 转换得到的
LocalDateTime默认时间为00:00:00,若业务需要保留时分秒信息,建议从数据源层面改用java.sql.Timestamp类型存储时间值 - 调整
ZoneId参数可适配不同时区的转换需求
内容的提问来源于stack exchange,提问作者Woodchuck
相关产品推荐
相关产品推荐

