2012-09-27 34 views
0

我在数据库中有一个定义的列notification_date为DATETIME在休眠中比较日期和时间

当用户过滤器我只得到日期。所以我使用Java转换为数据和时间。例如,如果userSearch日期是'2012-09-26'。最终转换的日期和时间格式将是'2012-09-26 17:34:00'

当我想搜索日期筛选操作像平等,小于,大于和日期之间,我不能使用Hibernate标准查询大于和小于操作的正确结果。

代码根据条件

只比较日期使用

crit.add(Restrictions.gt("notificationDate",notificationVO.getNotificationDate())); 

的限制会改变,是否有在Hibernate中提供的任何功能?

解决此问题的任何其他想法?

+0

我不明白。用户输入2012-09-26作为日期。你想要哪些通知?日期/时间为2012-09-26或更晚的人?日期/时间为2012-09-27或更晚的人? –

+0

@JBNizet:它在用户搜索上有所不同。我没有得到两个解决方案。 E,g小于2012-09-26并大于2012-09-26。 – Prathap

+0

我还是不明白。你为什么不回答我的问题?如果用户输入2012-09-26,您希望查询检索哪个通知? –

回答

1

从您的评论:

如果用户输入2012-09-26和搜索条件小于,我需要的所有日期小于2012-09-26

然后限制应该是:

crit.add(Restrictions.lt("notificationDate", notificationVO.getNotificationDate())); 

如果用户输入相同的日期,并且搜索标准“大于”,并使用下列限制:

crit.add(Restrictions.gt("notificationDate", notificationVO.getNotificationDate())); 

您当然会得到日期和时间大于2012-09-26 00:00:00的所有条目,当然包括2012-09-26日期的所有条目。

+0

我只需要比较日期。如果搜索大于2012-09-26,预期结果是2012-09-27。如果搜索小于2012-09-26,预期的结果是2012-09-25和更低。你给出的解决方案是我发布的问题。如果我搜索的是比2012-09-26 00:00:01更多的值。它不应该。 – Prathap

+1

这就是为什么我要求你告诉我你现在最终告诉我的三次。如果你想获得27及以后的通知,可以在用户输入日期后添加一天,然后执行上面的查询(用'ge'代替'gt') –

+0

那么我该如何比较等于大小写? – Prathap