Как преобразовать тип данных Date из оракула (формат "01-JAN-19") в тип данных LocalDate в Java - PullRequest
1 голос
/ 25 мая 2019

Я пытаюсь конвертировать используя LocalDate.parse () и не работает. В базе данных все даты имеют формат "01-JAN-19" (дд-мм-гг).

LocalDate.parse(resultSet.getString(5))

Ответы [ 2 ]

2 голосов
/ 25 мая 2019

Примечание: я ничего не знаю об Oracle и о том, как они обрабатывают даты, поэтому может быть лучший ответ.


Предполагая, что вы хотите создать LocalDate объект из String, например "01-JAN-19", вам придется использовать DateTimeFormatterBuilder и вызывать 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 (что относится к минутам вместо месяцев ), а также пытались проанализировать регистрозависимый по умолчанию.

1 голос
/ 25 мая 2019

Не используйте ResultSet.getString для даты.Поскольку JDBC 4.2 сразу получает LocalDate:

resultSet.getObject(5, LocalDate.class)

Обратите внимание на использование getObject вместо getStringили getDate.

...