【问题标题】:Criteriabuilder DATE comparisonCriteriabuilder 日期比较
【发布时间】:2016-05-13 21:48:15
【问题描述】:

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

predicates.add(criteriaBuilder.between(eventRoot.<Date>get("time"), dBegin, dEnd));
  • dBegin = 2 月 4 日星期四 00:00:00
  • dEnd = 2 月 4 日星期四 23:59:59

事件根

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。

我将如何只检查数据库的日期?这会提高性能还是介于两者之间是否可以?

【问题讨论】:

    标签: java hibernate date jpa criteria


    【解决方案1】:

    没有时间的日期比较的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(?)
    

    【讨论】:

      【解决方案2】:
      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));
      

      你可以在两者之间使用,它也可以。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-19
        • 2011-12-31
        • 2018-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-20
        • 2020-09-08
        相关资源
        最近更新 更多