В таблице есть столбец меток времени. Пример значения в этом может быть 2010-03-30 13:42:42. В Hibernate я делаю запрос диапазона Restrictions.between ("имя-столбца", fromDate, toDate).
Отображение Hibernate для этого столбца выглядит следующим образом.
<property name="orderTimestamp" column="order_timestamp" type="java.util.Date" />
Допустим, я хочу выяснить все записи с датой 30 марта 2010 г. и 31 марта 2010 г. Запрос диапазона в этом поле выполняется следующим образом.
Date fromDate = new SimpleDateFormat("yyyy-MM-dd").parse("2010-03-30");
Date toDate = new SimpleDateFormat("yyyy-MM-dd").parse("2008-03-31");
Expression.between("orderTimestamp", fromDate, toDate);
Это не работает.
Запрос преобразуется в соответствующие временные метки как "2010-03-30 00:00:00" и "2010-03-31 00:00:00". Таким образом, все записи за 31 марта 2010 года игнорируются.
Простым решением этой проблемы может быть указание конечной даты как "2010-03-31 23:59:59". Но я хотел бы знать, есть ли способ сопоставить только часть даты в столбце отметки времени.
Кроме того, Expression.between()
включает оба предела? Документация не проливает свет на это.