Проблема отображения даты в спящем режиме - PullRequest
0 голосов
/ 27 июля 2010

Я использую базу данных SQL Server и Hibernate. У меня есть следующая проблема, связанная с сохранением дат:

У меня есть следующий код:

String hql = "select user from User user where user.createDate = :date";
Query query = HibernateUtil.getSession().createQuery(hql);
Date date2 = DateHelper.getEndOfDay(new Date());//this returns 2010-07-27 23:59:59.999
query.setParameter("date", date2);

Когда я сравниваю дату 2010-07-27 23:59:59.999 Я получаю результаты с датой: 2010-07-28 00:00:00.0. Использование setDate () вместо setParameter () возвращает пользователей, чьи сохраненные даты находятся в один и тот же день, что означает, что часы, минуты и т. Д. Отбрасываются.

Гибернация отображает даты в java.util.Date, но в списке результатов все является меткой времени, я думаю, потому что метка времени расширяет java.util.Date. Что бы вы предложили сделать, чтобы получить хороший результат при сравнении на равенство?

Ответы [ 3 ]

1 голос
/ 27 июля 2010

Я думаю, что проблема в базе данных MSSQL, поскольку она сохраняет даты с точностью до 3 миллисекунд, как видно из одного из ответов этого сообщения.

Так что проблема в том, что свремя 23: 59: 59.999 не может быть сохранено в MSSQL (вероятно, с точностью до 3 миллисекунд вы никогда не сможете получить 999 при сравнении с временем, полученным из базы данных, это время необходимо преобразовать, а при преобразовании его в некоторую MSSQL-совместимую дату оно заканчиваетсяна следующий день.

Я думаю, что это реальная проблема, которую я вижу здесь. Чтобы избежать этого, я думаю, что я должен отформатировать даты, которые я сохраняю.

1 голос
/ 27 июля 2010

Вы пробовали Query.setDate() или Query.setTimestamp()?

0 голосов
/ 27 июля 2010

Если возможно, я предлагаю вам использовать JODA DateTime API .Сохраните объект DateTime в базе данных, используя класс PersistentDateTime Тип пользователя Hibernate из проекта joda-hibernate .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...