问题描述
|
您好,我在示例中使用了休眠模式。对于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();