아무거나

yyyy-MM-dd 형태의 날짜 조회 방법 본문

Java & Kotlin/Java

yyyy-MM-dd 형태의 날짜 조회 방법

전봉근 2019. 12. 26. 01:10
반응형

[springboot] JPA + QueryDSL + Predicate 에서 yyyy-MM-dd 형태의 날짜 조회 방법

* 조회할 날짜의 변수명을 registerdTime이라고 하며, DB에는 TimeStamp형식으로 저장된다. ( entity에는 LocalDateTime 속성임 )

 

1. 파라미터값의 속성이 String인 registerdTime을 받아온다.(ex:yyyy-MM-dd 형식으로 받아오는걸로 가정)

 

2. 시작날짜와 끝 날짜를 구하는 공통 클래스를 만든다.

   [LocalDateParser.java]

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import lombok.Getter;

@Getter
public class LocalDateParser {
    private LocalDate searchDate;

    public LocalDateParser(String currentDate) {
		this.searchDate = LocalDate.parse(currentDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
    }

    // 해당날짜의 시작시간(ex:2018-06-15 00:00:00)
    public LocalDateTime startDate() {
		return this.searchDate.atStartOfDay();
    }

    // 해당날짜의 끝 시간(ex:2018-06-15 23:59:59)
    public LocalDateTime endDate() {
		return LocalDateTime.of(this.searchDate, LocalTime.of(23,59,59));
    }
}

 

3. 쿼리빌더를 생성하는 부분에 해당 날짜로 조회할 내용 추가

   [Predicate.java]

....

        if (!Strings.isNullOrEmpty(param.getRegisterdTime())) {
            LocalDateParser localDateParser = new LocalDateParser(param.getRegisterdTime());
            builder.and(qTest.registerdTime.between(localDateParser.startDate(), localDateParser.endDate()));
        } else {
            // default : toDay >=
            LocalDate currentDate = LocalDate.now();
            builder.and(qTest.registerdTime.gt(currentDate.atStartOfDay()));
        }

.... 
반응형

'Java & Kotlin > Java' 카테고리의 다른 글

[Design Pattern] Visitor Pattern  (0) 2020.01.01
[Design Pattern] Decorator Pattern  (0) 2019.12.28
<![CDATA[ ]]> 사용 이유  (0) 2019.12.24
[Design Pattern] Composite Pattern  (0) 2019.12.21
[Design Pattern] Bridge Pattern  (0) 2019.12.12
Comments