관리 메뉴

민우의 코딩노트

Spring JPA - 날짜 사이 데이터 가져오기 (LocalDateTime) 본문

Knowledge/Spring

Spring JPA - 날짜 사이 데이터 가져오기 (LocalDateTime)

미미누 2022. 1. 29. 18:06

[쿼리 메서드 사용]

public interface PostRepository extends JpaRepository<Post, Long> {

    List<Post> findAllByCreateAtBetween(LocalDateTime start, LocalDateTime end);

}

JpaRepository에서 By(날짜 엔티티)Between문을 사용하여 정의할 수 있다.

 

public void test() {
  LocalDateTime startDatetime = LocalDateTime.of(LocalDate.now().minusDays(1), LocalTime.of(0,0,0));
  LocalDateTime endDatetime = LocalDateTime.of(LocalDate.now(), LocalTime.of(23,59,59));

  postRepository.findAllByViewAtBetween(startDatetime, endDatetime));
}

LocalDateTime.of를 사용하여 날짜 시작과 끝을 설정할 수 있다.

 

위에 startDateTime은 현재날짜 1일 전 0시 0분 0초를 설정한 것이다.

endDateTime현재날짜의 23시 59분 59초를 설정한 것이다. (24, 0, 0)을 설정 시 오류가 난다.


[@Query를 이용한 사용자 쿼리]

@Query("select p from Post p where p.createAt between :start and :end")
    List<Post> getBestPost(LocalDateTime start, LocalDateTime end);

 

JpaRepository에서 between and문을 사용하여 정의할 수 있다.

 

 public List<Post> test(){
        LocalDateTime start = LocalDateTime.of(LocalDate.now().minusDays(1), LocalTime.of(0, 0, 0));
        LocalDateTime end = LocalDateTime.now();

        List<Post> bestPost = postRepository.getBestPost(start, end);
        return bestPost;
   }