java中 LocalDate 是2016-05-08 但是插入oracle变成了2016-05-08 120000 而不是 2016-05-08怎么解决? 1localDateTime 与 date类型在插入没有这个问题 2获取数据时localdate会更好。所以最好使用localdate类型 3目前发现localdate在插入时没有时间信息然后多出120000
这是因为Oracle数据库中的DATE数据类型包含日期和时间信息,而LocalDate只包含日期信息。当将LocalDate插入到DATE类型的列中时,Oracle会自动将时间部分设置为12:00:00。
要解决这个问题,可以使用to_date函数将LocalDate转换为DATE类型,并将时间部分设置为00:00:00。例如:
LocalDate localDate = LocalDate.of(2016, 5, 8);
Date date = Date.valueOf(localDate); // 转换为java.util.Date类型
PreparedStatement ps = connection.prepareStatement("INSERT INTO table_name (date_column) VALUES (to_date(?, 'YYYY-MM-DD HH24:MI:SS'))");
ps.setString(1, date.toString() + " 00:00:00");
ps.executeUpdate();
这样插入到Oracle数据库中的时间部分就会被设置为00:00:00,只保留日期部分。
另外,当从数据库中获取日期时,可以使用LocalDate的valueOf方法将java.util.Date类型转换为LocalDate类型。例如:
ResultSet rs = statement.executeQuery("SELECT date_column FROM table_name");
while (rs.next()) {
Date date = rs.getDate(1);
LocalDate localDate = LocalDate.ofInstant(date.toInstant(), ZoneId.systemDefault());
System.out.println(localDate);
}
这样可以获取到只包含日期信息的LocalDate对象
原文地址: https://www.cveoy.top/t/topic/hU0o 著作权归作者所有。请勿转载和采集!