날짜 형식 변경할 때
select문에서 DATE_FORMAT 함수를 사용하려면
Expressions.stringTemplate("DATE_FORMAT( {0}, {1} )", 변경할 값, 변경할 날짜 형식)
예) createdAt 컬럼의 데이터를 "%Y-%m-%d %H:%i:%s" 형식으로 변경
fun date(cardNumber: String): String? {
return queryFactory.select(
Expressions.stringTemplate(
"DATE_FORMAT( {0}, {1} )",
createdAt,
ConstantImpl.create("%Y-%m-%d %H:%i:%s")
).coalesce("")
).from(member).orderBy(member.id.desc()).fetchFirst()
}
DATE 날짜, 시간 등을 더하거나 뺄 때
My SQL 구문 처럼 DATE_FORMAT 안에 DATE_ADD를 넣었더니 INTERVAL함수에서 계속 에러가 떴다
찾아보니 query dsl에서는 DATE_ADD를 사용하지 못한다고 되어있었다
시간함수를 먼저 더하거나 빼고 형식을 바꾸면 된다고 하는데 조회된 쿼리문을 date형식으로 들고 오기 위해서는 dateTemplate을 사용해야 했다
Expressions.dateTemplate(Date::class.java, "DATEADD(HOUR, {0},{1})", Expressions.asNumber(숫자), 변경할 값)
DATEADD에는 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 등 사용할 수 있다
https://learn.microsoft.com/ko-kr/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-ver16
예) member 테이블의 createdAt 컬럼의 날짜에서 9시간을 뺀 날짜
val formatTime = Expressions.dateTemplate(Date::class.java, "DATEADD(HOUR, {0},{1})", Expressions.asNumber(-9), member.createdAt)
여기서 다시 DATE_FORMAT을 사용해야 한다
Expressions.stringTemplate("DATE_FORMAT({0},{1})", formatTime, ConstantImpl.create("%Y-%m-%d %H:%i:%s"))
반응형
'Kotlin' 카테고리의 다른 글
pre-signed url 사용하기, 일정 기간 동안 객체 다운로드 url 생성 (0) | 2023.10.12 |
---|---|
[Querydsl] 멀티 DB(Multi DB) 설정 하기, DB 2개 이상 연결 (0) | 2023.07.17 |
[Spring Boot] Scheduled사용하여 특정 시간마다 동작하는 코드 구현 (0) | 2023.05.19 |
[Spring Boot] 스프링 부트 시작 - 프로젝트 만들기 (0) | 2023.02.19 |
ModelAndView에서 Thymeleaf 사용하기 (0) | 2022.12.14 |
댓글