Criteriabuilder DATE比较

时间:2016-02-04 10:22:02

标签: java hibernate date jpa criteria

我想将日期与数据库中的时间戳进行比较。我目前使用

            predicates.add(criteriaBuilder.between(eventRoot.<Date>get("time"), dBegin, dEnd));
  • dBegin = Thu Feb 04 00:00:00
  • dEnd = Thu Feb 04 23:59:59

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。

我如何仅使用数据库检查日期?这会改善性能还是在两者之间做得好?

2 个答案:

答案 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(?)