我想将日期与数据库中的时间戳进行比较。我目前使用
predicates.add(criteriaBuilder.between(eventRoot.<Date>get("time"), dBegin, dEnd));
eventRoot
private Date time;
我也尝试使用以下格式格式化日期,但没有成功。
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
改变
predicates.add(criteriaBuilder.equal(eventRoot.<String>get("time"), curDformat));
其中curDformat是
的格式化日期2016-02-04
在eventRoot中将类型更改为String。
我如何仅使用数据库检查日期?这会改善性能还是在两者之间做得好?
答案 0 :(得分:1)
SimpleDateFromat dateFormat = new SimpleDateFromat("yyyy-MM-dd hh:mm:ss");
Date dBegin = dateFormat.parse("2018-02-04 00:00:00");
Date dEnd = dateFormat.parse("2018-02-04 23:59:59");
predicates.add(criteriaBuilder.between(<Date>get("time"), dBegin, dEnd));
你可以使用它,它也可以。
答案 1 :(得分:0)
用于没有时间的日期比较的criteriaBuilder谓词
cb.equal(cb.function("date", Date.class, myObj.get("createdAt")), cb.function("date", Date.class, cb.literal(new Date())));
它产生以下 SQL where 子句。
where date(myObj0_.created_at)=date(?)