Ограничения между датами в спящих критериях
Здравствуйте, я использую 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-сервер.
Ответы
Ответ 1
Я предполагаю, что ваш 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));
Ответ 2
criteria.add(Restrictions.between("DATE(auditDate)", sDate, eDate));
используйте это для игнорирования времени с даты.
Ответ 3
criteria.add(Restrictions.ge("fromDate", DateUtil.persianToGregorian(currentDate)));
criteria.add(Restrictions.le("toDate", DateUtil.persianToGregorian(currentDate)));
return criteria.list();
Ответ 4
добавить еще один день до даты окончания
@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();