• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

SQL Function 관련 (DB : postgresql)

21.11.26 16:09 작성 조회수 593

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
DB는 Postgresql 사용 중으로, .yml 에 아래와 같이 정의했습니다.
dialect: org.hibernate.dialect.PostgreSQL10Dialect

 

사용하고 싶은 것은 날짜별로 Group By 하여 AVG 구하는 것인데요. 아래와 같이 sql 문 작성하였는데 에러가 납니다ㅜㅜ

return queryFactory.select(Expressions.dateTimeTemplate(LocalDateTime.class, "DATE_FORMAT({0}, '{1s}')", osMonitorCollection.timestamp, ConstantImpl.create("YYYY-MM-DD")), osMonitorCollection.cpuUtilization.avg())
.from(osMonitorCollection)
.groupBy(Expressions.dateTimeTemplate(LocalDateTime.class, "DATE_FORMAT({0}, '{1s}')", osMonitorCollection.timestamp, ConstantImpl.create("YYYY-MM-DD")))
.fetch();

org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode +-[METHOD_CALL] MethodNode: '(' | +-[METHOD_NAME] IdentNode: 'DATE_FORMAT' {originalText=DATE_FORMAT} | \-[EXPR_LIST] SqlNode: 'exprList' | +-[DOT] DotNode: 'osmonitorc0_.timestamp' {propertyName=timestamp,dereferenceType=PRIMITIVE,getPropertyPath=timestamp,path=osMonitorCollection.timestamp,tableAlias=osmonitorc0_,className=com.kt.cloud.redis.monitoring.domain.OsMonitorCollection,classAlias=osMonitorCollection} | | +-[ALIAS_REF] IdentNode: 'osmonitorc0_.os_monitor_collection_id' {alias=osMonitorCollection, className=com.kt.cloud.redis.monitoring.domain.OsMonitorCollection, tableAlias=osmonitorc0_} | | \-[IDENT] IdentNode: 'timestamp' {originalText=timestamp} | \-[QUOTED_STRING] LiteralNode: ''YYYY-MM-DD''

 

답변 2

·

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2021.11.27

안녕하세요. GO.님, 공식 서포터즈 OMG입니다.

postgreSQL을 사용하신다면 DATE_FORMAT 대신 to_date, to_timestamp로 확인해보시겠어요?

 

postgres dialect를 까보니(?) 날짜 포맷 변경 함수는 말씀드린 to_date와 to_timestamp가 등록되어있었습니다.

 

 

감사합니다.

0

안녕하세요. GO님

이 부분은 저도 잘 모르겠습니다.

혹시 아시는 분 있으면 답글 부탁드려요.

감사합니다.