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())
                           ...

댓글

이 블로그의 인기 게시물

[Protocol] WIEGAND 통신

Orange for Oracle에서 한글 깨짐 해결책

[URL] 대소문자를 구분하나?