Я пытаюсь отфильтровать записи в HQL с датами временных отметок для определенного диапазона времени.Например, получить все элементы, созданные между 13:00 и 15:00 за последний месяц.
Моя первоначальная идея состояла в том, чтобы приводить поле метки времени к ::time
из PostgreSQL.Но Hibernate не имеет этой встроенной функции (я использую HQL для построения запросов).
Кажется, что есть функция date , но нет средства форматирования времени.У меня нет строгих требований к реализации, и я могу настроить решение, если оно соответствует основной идее.Теперь я отправляю границы даты в виде меток времени и значения времени в виде строк и делаю два параллельных сравнения between
.
@Query("SELECT t FROM Table t WHERE t.status.id = ?1"
+ " AND t.startDate >= ?2 AND t.startDate <= ?3"
+ " AND t.startDate::time >= ?4 AND t.startDate::time <= ?5")
Page<Item> findByStatusIdAndDateRange(Long activeId, final long startDate, final long endDate, final String startTime, final String endTime, Pageable pageRequest);
Это не рабочий код, поэтому нет проблем с производительностью при приведении значений в запросе.
Спасибо за любой совет!