2011-05-25 48 views
16

您好,我在我的示例中使用了hibernate。对于Bean Table Audit Trial,我想在包含上限&下限的日期范围内提取审计试用版。 我的代码是像下面Hibernate标准中日期之间的限制

Criteria criteria = session.createCriteria(AuditTrail.class); 

criteria.add(Restrictions.between("auditDate", sDate, eDate)); 

我的出发日期是25/11/2010。并且结束日期是25/05/2011。但它只会将结果提供给24/05/2011。它不执行包含式搜索。任何其他方式都可以执行此操作。 我正在使用SQL服务器。

回答

32

我假设您的auditDate实际上是一个时间戳。如果是这种情况,那么这是正常的,因为25/05/2011意味着25/05/2011在0点(在早上)。因此,当然,2011年5月25日的每一行都有一个审计时间戳,早上0点以后。

我会将1天添加到您的结束日期,并使用auditDate >= sDate and auditDate < eDate

criteria.add(Restrictions.ge("auditDate", sDate)); 
criteria.add(Restrictions.lt("auditDate", eDate)); 
1

criteria.add(Restrictions.between("DATE(auditDate)", sDate, eDate));使用它来忽略从日期开始的时间。

0
criteria.add(Restrictions.ge("fromDate", DateUtil.persianToGregorian(currentDate))); 
criteria.add(Restrictions.le("toDate", DateUtil.persianToGregorian(currentDate))); 

return criteria.list();