HQL выполняет поиск по дате (Java + NetBeans) - PullRequest
1 голос
/ 01 июня 2010

Привет всем, у меня есть следующий вопрос. У меня есть таблица резервов в моей БД MySQL, столбцы даты определены DATETIME. Мне нужно сделать запрос, используя hibernate, чтобы найти все резервы за один день, независимо от часа, только в том же месяце и дате того же года, и я делаю это

public List<Reserve> bringAllResByDate(Date date){

em = emf.createEntityManager();
Query q = em.createQuery("SELECT r FROM Reserve r WHERE r.date=:date ");
q.setParameter("date", date);

...

Я действительно не знаю, как это сравнить, и принести мне только те из указанной даты, любая помощь ??

Ответы [ 2 ]

10 голосов
/ 01 июня 2010
Query q = em.createQuery(
    "SELECT r FROM Reserve r WHERE cast(r.date as date) = :date"); 

Обратите внимание, что базовая база данных должна поддерживать синтаксис ANSI cast(... as ...).

0 голосов
/ 01 июня 2010

Хотелось бы, чтобы существовал независимый от базы данных способ приведения даты и времени в даты. Обычно я так поступаю с вашим сценарием.

Calendar from = Calendar.getInstance();
Calendar to = Calendar.getInstance();

from.add(Calendar.DATE, -1);
to.add(Calendar.DATE, 1);

Query q = em.createQuery("SELECT r FROM Reserve r WHERE r.date > :dateFrom AND r.date < :dateTo ");
q.setParameter("dateFrom", from.getTimeInMillis());
q.setParameter("dateTo", to.getTimeInMillis());
...