如何在 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
而不是 getString
或 getDate
。
我尝试使用 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
而不是 getString
或 getDate
。