728x90
반응형
여러분은 무슨 이유에서인지 날짜를 비교해야 한다.
하지만 QueryDSL의 자체적인 함수로는 날짜 타입의 변환이 어렵다.
그래서 사용되는 것이 StringTemplate과 DateTemplate, 그리고 Expressions이다.
만약 가지고 있는 파라미터의 Date 타입이 java.util.Date인데
Date라는 타입 자체를 버리지 않으면서 한국에서는 흔한 locale인
0000년-00월-00일 00시:00분:00초 라는 포맷을 가지도록 변환해주고 싶다면
아래와 같이 활용하면 된다.
DateTimeTemplate dateTime = Expressions.dateTimeTemplate(LocalDateTime.class, "DATE_FORMAT({0}, {1})", QueryDSL전용 dto.칼럼명 , "YYYY-MM-DD HH24:MI:SS");
참고로
*YYYY-MM-DD HH24:MI:SS 에서 24는 24시 기준을 뜻한다. 예: 16시, 21시 등등..
그러나 편의를 위해 String 타입으로 변환하여 비교하는 경우가 많다.
아래는 String 타입으로 변환하는 코드이다.
StringTemplate dateTime = Expressions.stringTemplate("TO_CHAR({0}, {1})", QueryDSL전용 dto.칼럼명, "YYYY-MM-DD HH24:MI:SS");
반대로 받아온 값이 String 타입인데 Date 타입으로 변환하고 싶을 수 있다.
그럴 때는
DateTemplate toDate = Expressions.dateTemplate(LocalDateTime.class, "TO_DATE({0}, {1})", QueryDSL전용 dto.칼럼명, Expressions.constant("YYYY-MM-DD HH24:MI:SS"));
만약 오늘 날짜를 비교하고 싶다면 QueryDSL전용 dto.칼럼명을 new Date()로 받아주고
원하는 날짜 포맷을 입력해주기만 하면 된다.
아래는 몇가지 Date format의 예시이다.
https://sidepower.tistory.com/294
그런뒤 두 변수를 비교해야 할 때는
where 조건절에
아래 연산자들을 사용하면 된다.
- eq ===
- ne !==
- lt <
- loe <=
- gt >
- goe >=
728x90
반응형
'개발자 전향 프로젝트' 카테고리의 다른 글
Springdoc-openapi-ui로 Swagger3 사용하기 (0) | 2023.02.14 |
---|---|
최신 Spring Security 사용법 - SecurityFilterChain (0) | 2023.02.09 |
날짜/달력 API를 사용해서 기간으로 조회/검색하기 (쉬움) (2) | 2023.01.10 |
Querydsl + Spring 3.0 + Java17 업데이트 내용! [Maven+Gradle] (10) | 2022.12.20 |
[JAVA] JPA 활용법 -2 (QueryDSL 활용해보기) (0) | 2022.12.06 |