我有这个Sql查询。它返回每天生成的事件数。

SELECT DATE_FORMAT(`timestamp`, "%y-%m-%d") AS date , COUNT(*)
FROM `Event`
WHERE `active`=1
GROUP BY date

输出
 |   date   |   Count   |
 ------------------------
 | 14-09-29 |     1     |
 | 14-11-02 |     1     |
 | 14-11-03 |     3     |
     ...         ...

我想在JPA QueryDSL上做这个查询,但我不知道如何做,因为我还没有找到方法DATE_FORMAT('timestamp', "%y-%m-%d") AS date
是否可以在JPA QueryDSL上执行此查询,或者由于限制而无法执行此查询?
谢谢您。

最佳答案

最后我用这个查询来解决它。我还添加了日期范围过滤器。

 QEvent qEvent = QEvent.event;

 JPAQuery query = new JPAQuery(entityManager);

 return query.from(qEvent)
                 .where(qEvent.active.eq(true)
                    .and(qEvent.sensorId.equalsIgnoreCase(sensorId)
                    .and(qEvent.timestamp.after(rangeStart)
                    .and(qEvent.timestamp.before(rangeEnd)))))
             .groupBy(qEvent.timestamp.dayOfYear())
             .list(new QTuple(qEvent.timestamp, Wildcard.count));

谢谢你的帮助。

10-06 09:05