[英]Restrictions Between for Date in Hibernate Criteria
您好,我在示例中使用 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 服务器。
我假设您的 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));
使用它来忽略从日期开始的时间。
criteria.add(Restrictions.ge("fromDate", DateUtil.persianToGregorian(currentDate)));
criteria.add(Restrictions.le("toDate", DateUtil.persianToGregorian(currentDate)));
return criteria.list();
再增加一天到结束日期
@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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.