QueryDSL group by date
MySQL 사용중이고 datetime 컬럼을 yyyyMMdd 형태로 group by 해야할 필요성이 생겼다.
더 나은 방법이 있는지 모르겠지만, 아래처럼 DateTemplate을 사용해서 DATE_FORMAT()을 sql에 넣어 줄 수 있다. StringPath는 as()로 aliasing한 부분을 referencing 하기 위해 사용하였다.
DateTemplate<LocalDateTime> dateFormat = Expressions.dateTemplate( LocalDateTime.class, "DATE_FORMAT({0}, {1})", dateTimeColumnPath, "%Y-%m-%d"); StringPath date = Expressions.stringPath("date"); JPAQuery<Tuple> query = select(dateFormat.as("date"),
columnPath.count().as("cnt")) ... groupBy(date) orderBy(date.asc()) ...
댓글
댓글 쓰기