java .time
Лучшее решение - использовать умные объекты, а не тупые строки для обмена значениями с вашей базой данных. В частности, используйте современные java .time классы.
В качестве вводимых данных используется название месяца в верхнем регистре. Это не соответствует локализации для Engli sh, по крайней мере, в США или Великобритании Engli sh. Поэтому мы должны использовать DateTimeFormatterBuilder
, чтобы получить DateTimeFormatter
, который допускает все заглавные буквы.
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern( "dd-MMM-uu" ) ;
DateTimeFormatter formatter = builder.toFormatter() ;
Разобрать вашу входную строку.
String input = "31-JAN-20" ;
LocalDate localDate = LocalDate.parse( input , formatter ) ;
Ловушка для DateTimeParseException
в случае неисправности входы.
Передача в базу данных с использованием драйвера JDB C, совместимого с JDB C 4.2 или более поздней.
myPreparedStatement.setObject( … , LocalDate ) ;
Извлечение.
LocalDate localDate = myResultSet.getObject( … , LocalDate.class ) ;
Совет : Сообщите издателю ваших данных о стандартных форматах ISO 8601 для обмена значениями даты и времени в виде текста.