Форматирование LocalDateTime перед сохранением в базу в Spring Boot приложением

120
10 декабря 2018, 21:00

Сохраняю в базу дату и время события, для этого в классе использую LocalDateTime, в базе это выглядит вот так 2018-09-05 10:42:58.616000, есть ли способ, как-то форматировать дату перед сохранением, чтобы её формат был yyyy-MM-dd HH:mm.

@Entity
@Data
public class WorkTable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private LocalDateTime enter;
private LocalDateTime exit;
private boolean onWork;
}

Дело в том, что я планирую использовать метод поиска по таблице, по указанному времени и поэтому я хотел бы избавиться от секунд.

Answer 1

Используйте DateTimeFormatter если вам нужно переформатировать дату перед сохранением в бд.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
String formattedDateTime = enter.format(formatter);
enter = LocalDateTime.parse(formattedDateTime, formatter);
Answer 2

Полагаю, что поля типа LocalDateTime мапируются на колонки таблицы, тип которых TIMESTAMP. Тоесть формат даты, который вы видите в базе данных, выполняя обычный SELECT * FROM WORK_TABLE вручную, определяется той программой, в которой вы этот запрос выполняете. Но в вашем коде, в ResultSet, вы получите всё тот же TIMESTAMP, который сможете отформатировать на свой вкус как вам хочется.

READ ALSO
Вылетает приложение при поиске AutoCompleteTextView

Вылетает приложение при поиске AutoCompleteTextView

В активити расположен AutoCompleteTextView, вот собственно код:

173
Загрузка файлов и медиа запросы

Загрузка файлов и медиа запросы

Всем известно, что стили из медиа запросов не применяются, если устройство не подходит под параметры, указанные в запросеА что с файлами,...

143
Мерцает шрифт при смене слайда

Мерцает шрифт при смене слайда

Не могу найти ошибкуПри смене слайда в слайдере на странице: http://www

116
Изменить координаты точек полигона

Изменить координаты точек полигона

Есть полигон, у которого не указан массив точекТребуется в процессе работы эти точки указать

129