Hibernate标准中日期之间的限制

时间:2011-05-25 10:14:17

标签: hibernate

你好我在我的例子中使用了hibernate。对于bean表审计试验我想在日期范围之间获取审计试验,包含上限和下限。下限。 我的代码如下所示

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

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

我的开始日期是25/11/2010。结束日期为25/05/2011。但它仅将结果提供给24/05/2011。它不执行包含性搜索。还有其他方法可以执行此操作。 我正在使用SQL服务器。

4 个答案:

答案 0 :(得分:39)

我认为你的auditDate实际上是一个时间戳。如果是这样,那么这是正常的,因为25/05/2011意味着25/05/2011在0点(早上)。因此,当然,在25/05/2011日期具有审计时间戳的每一行都是在早上0点之后。

我会在结束日期添加1天,然后使用auditDate >= sDate and auditDate < eDate

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

在结束日期后再增加一天

 @Autowired
 private SessionFactory sessionFactory;

 String startDate = "2019-07-31 ";
 String endDate = "2019-08-24 ";

 Date fromDate = format.parse(fromDate);

 /* Add one more day to the end date*/

 Date to =format.parse(endDate);
 Calendar today = Calendar.getInstance();
 today.setTime(dateto);
 today.add(Calendar.DAY_OF_YEAR, 1);

 Date toDate= format.parse(format.format(today.getTime()));

 Criteria crit = sessionFactory.getCurrentSession().createCriteria(model.class);
 crit.add(Restrictions.between("dateFieldName", fromDate, toDate));
 List result = crit.list();

答案 3 :(得分:0)

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

 return criteria.list();