Как запросить базу данных по дате, но ваша база данных хранится как дата + время. - PullRequest
1 голос
/ 30 июня 2011

Поскольку я хочу сохранить дату и время для каждой информации в таблице X, я использую

@Temporal(TemporalType.TIMESTAMP)
private Date dateProcess;    //java.util.Date

и это прекрасно работает. Но теперь я хочу создать запрос, который возвращает все данные за одну и ту же дату. Поэтому я стараюсь

SELECT c from X c where c.dateProcess = : dateProcess

тогда я бы передал java.util.Date для параметра dateProcess, но возвращенный список результатов пуст. Я думаю, это должно быть, что time встает здесь на свои места. Поэтому, если две даты не имеют точной даты и времени, они не будут равны, что объясняет, почему мой возвращенный список результатов пуст. Итак, как мне вернуть список базы данных на дату (не заботиться о времени) в этом сценарии?

Ответы [ 4 ]

2 голосов
/ 01 июля 2011

Просто используйте диапазон дат, укажите время начала и окончания.> startTime и

1 голос
/ 30 июня 2011

Попробуйте TemporalType.DATE

Если вам нужно сохранить время, но только запросить дату, у вас есть варианты:

  • использовать функцию даты JPQL - day(..), months(..), year(..)
  • используйте < и > для диапазонов дат (как предположил Джеймс)
  • сохранить дату и время в двух разных столбцах.
0 голосов
/ 01 июля 2011

В настоящее время мне нравится это

Использование HQL для запроса даты без учета времени в Oracle

Я еще не пробовал это. Так что не уверен, что это сработает. date_format - зарегистрированная функция в релизе.

http://www.docjar.com/html/api/org/hibernate/dialect/MySQLDialect.java.html

0 голосов
/ 30 июня 2011

Помогает ли указание временного типа как Date или вы потеряли бы точность?

...