8월, 2022의 게시물 표시

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