我正在尝试使用CriteriaBuilder的between
从数据库中过滤掉一些数据。我将java.util.Date用于输入和实体列。我总是会按输入日期获得结果-1.例如如果我的输入日期为16-12-2019,那么我也将获得15-12-2019的数据。我无法理解这种奇怪的行为。我正在使用以下方法:
predicates.add(criteriaBuilder.between(root.get(Constants.COL_REGISTRATION_DATE),
registrationStartDate, registrationEndDate));
我也尝试了以下方法,但结果仍然相同。
Predicate startDatePredicate = criteriaBuilder.greaterThanOrEqualTo(root.get(Constants.COL_REGISTRATION_DATE), registrationStartDate);
Predicate endDatePredicate = criteriaBuilder.lessThanOrEqualTo(root.get(Constants.COL_REGISTRATION_DATE), registrationEndDate);
predicates.add(criteriaBuilder.and(startDatePredicate, endDatePredicate));
有没有人遇到这样的问题。请帮我解决这个问题。
最佳答案
请尝试:
predicates.add(criteriaBuilder.between(root.get(Constants.COL_REGISTRATION_DATE),
LocalDate.parse(registrationStartDate),
LocalDate.parse(registrationEndDate))
);
关于java - java util与Criteria api的日期比较未按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59747364/