2011-05-25 46 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();