Сравнение даты Java и столбца DateTime в таблице базы данных с использованием SQL - PullRequest
5 голосов
/ 23 ноября 2011

У меня есть два Date Java-объекта, которые будут назначены некоторым переменным в SQL-запросе (потому что я использую Hibernate), чтобы сравнить их со столбцом типа DateTime, чтобы получить строки с указанным диапазоном времени,например:

  WHERE event_date >= :startDate and event_date < :finishDate

Я не могу напрямую сравнить дату с датой и временем, поэтому я подумал о 2 возможных решениях:

  • Попробуйте преобразовать поле event_date, используя поле запроса к дате, прежде чемсравнение.
  • Или попробуйте преобразовать Java-объект date в dateTime, который, я думаю, может оказаться невозможным.

Что бы вы предложили мне сделать?

1 Ответ

4 голосов
/ 23 ноября 2011

Полагаю, у вас проблемы, потому что вы используете setDate (поправьте меня, если я ошибаюсь) и setDate метод:

Привязывает дату (время усекается) данного Date объекта к именованному параметру запроса.

Используйте взамен setTimestamp, который связывает дату и время данного Date объекта:

java.util.Date startDate = … ;
java.util.Date finishDate = … ;
Query query = session.createQuery("from YourTable where event_date >= :startDate and event_date < :finishDate");
query.setTimestamp("startDate", startDate);
query.setTimestamp("finishDate", finishDate);


пс: обязательно используйте java.util.Date объект и НЕ java.sql.Date один.

...