tl; dr
Хорошо работает либо SQL, либо Java.Для SQL см. правильный ответ от Али.
Для Java передайте LocalDate
запросу PreparedStatement
.
LocalDate.parse( // `LocalDate` represents a date-only value without time-of-day and without time zone. Works with SQL-standard `DATE` type.
Integer.toString( 20180525 ) , // Convert integer to text, for a `String` object as input.
DateTimeFormatter.BASIC_ISO_DATE // Specify a formatting pattern to match our input string.
) // Returns a `LocalDate` object.
2018-05-25
java.time
Что касается Java, упомянутого в Вопросе, здесь приведен код с использованием современного java.time классы.Нужно ли использовать для анализа строки SQL или Java, зависит от вашей ситуации и ваших вкусов, так как любой из маршрутов работает.
LocalDate
Класс LocalDate
представляет значение только для даты без времени суток и без часового пояса.
Вам необходимо указать шаблон форматирования, соответствующий вашему вводу.В этом конкретном случае ваша входная строка имеет стандартный формат ISO 8601.В частности, «базовый» вариант форматов ISO 8601, который минимизирует использование разделителей.В java.time вы найдете , для которого этот конкретный шаблон форматирования удобно предопределен .
String input = Integer.toString( 20180525 ) ; // Convert integer to text for input as `String`.
DateTimeFormatter f = DateTimeFormatter.BASIC_ISO_DATE ;
LocalDate ld = LocalDate.parse( input , f ) ;
ld.toString (): 2018-05-25
JDBC
Начиная с JDBC 4.2 и более поздних версий, вы можете напрямую обмениваться объектами java.time с вашей базой данных.Всегда лучше использовать умные объекты, а не тупые строки.
String sql = "SELECT event_date FROM tbl WHERE event_date = ? ; " ;
…
myPreparedStatement.setObject( 1 , ld ) ;
И поиск.
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии.Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Вы можете обмениваться java.time объектами напрямую с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .