Restrictions Between for Date in Hibernate Criteria
Hello I am using hibernate in my example.For bean Table Audit Trial I want to fetch audit trial between a date range with 开发者_StackOverflow中文版inclusion of upper & lower limits. My code is like below
Criteria criteria = session.createCriteria(AuditTrail.class);
criteria.add(Restrictions.between("auditDate", sDate, eDate));
My starting date is 25/11/2010
. and end date is 25/05/2011
.But it is only giving the result up to 24/05/2011
.It is not performing inclusive search.Any other way to do this.
I am using SQL server.
I assume your auditDate is in fact a timestamp. If it's the case, then this is normal, because 25/05/2011 means 25/05/2011 at 0 o'clock (in the morning). So, of course, every row having an audit timestamp in the date 25/05/2011 is after 0 o'clock in the morning.
I would add 1 day to your end date, and use 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));
use this for ignoring time from date.
criteria.add(Restrictions.ge("fromDate", DateUtil.persianToGregorian(currentDate)));
criteria.add(Restrictions.le("toDate", DateUtil.persianToGregorian(currentDate)));
return criteria.list();
add one more day to end date
@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();
精彩评论