休眠标准中日期之间的限制

问题描述

| 您好,我在示例中使用了休眠模式。对于bean Table Audit Trial,我想获取包含上限和下限的日期范围之间的审计试用。 我的代码如下
Criteria criteria = session.createCriteria(AuditTrail.class);

criteria.add(Restrictions.between(\"auditDate\",sDate,eDate));
我的出发日期是
25/11/2010
。且结束日期为
25/05/2011
,但仅将结果赋予
24/05/2011
。它未执行包含式搜索。 我正在使用sql Server。     

解决方法

我认为您的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));
    ,
criteria.add(Restrictions.between(\"DATE(auditDate)\",sDate,eDate));
用它忽略日期时间。     ,在结束日期后再增加一天
 @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();
    ,
 criteria.add(Restrictions.ge(\"fromDate\",DateUtil.persianToGregorian(currentDate)));
 criteria.add(Restrictions.le(\"toDate\",DateUtil.persianToGregorian(currentDate)));

 return criteria.list();