如何在 Java 中的 LocalDate 数据类型中转换来自 oracle 的 Date 数据类型(格式“01-JAN-19”)

How to convert Date data type from oracle ( format " 01-JAN-19") in LocalDate data type in Java

我尝试使用 LocalDate.parse() 进行转换,但没有成功。在数据库中,所有日期的格式均为“01-JAN-19”(dd-mm-yy)。

LocalDate.parse(resultSet.getString(5))

注意:我对 Oracle 及其处理日期的方式一无所知,因此可能会有更好的答案。


假设您要从 String 创建一个 LocalDate 对象,例如 "01-JAN-19",您将不得不使用 DateTimeFormatterBuilder and invoke DateTimeFormatterBuilder#parseCaseInsensitive(因为月份在你的例子中是大写):

var formatter = new DateTimeFormatterBuilder().parseCaseInsensitive()
        .appendPattern("dd-MMM-yy").toFormatter();
System.out.println(LocalDate.parse("01-JAN-19", formatter));

输出:

2019-01-01

LocalDate#parse 对您不起作用,因为您指定了 mm(指的是 分钟 而不是 ),以及它默认尝试解析 case-sensitive。

不要使用 ResultSet.getString 作为约会对象。由于JDBC 4.2 get a LocalDate一次:

resultSet.getObject(5, LocalDate.class)

注意使用 getObject 而不是 getStringgetDate