JPA & SQL

[JPA/SQL] 현재 시간과 비교해서 데이터 가져오기

김먼저 2022. 7. 20. 19:58

 

목표 : 현재시간 기준으로 일정시간이 안에 생성된 데이터 찾기

 

 

아래 DB에서 현재 시간과 비교해 조건에 맞는 데이터를 가져오는 쿼리를 만든 후

 

JPA로 변환 하고자 합니다!

 

(MySQL Workbench, MariaDB 사용했습니다.)

 

 

처음 만드는 쿼리라 만드는데에 시간을 좀 썼습니다...

 


select * from 테이블명
WHERE date(date_created) >= date(subdate(now(), INTERVAL 1 MINUTE)) 
And date(date_created) <= date(now())order by date_created asc;

 

(MINUTE -> DAY, HOUR 등등 대체 가능)

 

참조 블로그 : https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=fromyongsik&logNo=40122605914

 

MySQL 함수를 활용한 날짜비교 쿼리문 작성하기

다음은 테이블(purchaseT) 정보이다. 이 테이블은 날짜와시간대 별로 각 회원의 구매물품을 저장한다. 다...

blog.naver.com

 

★where 뒤에 date로 감싸는건 성능이 안좋다고 하니 다른 방법을 찾으면 수정 또는 추가로 올리도록 하겠습니다.

 

 

★★추가★★

 

// date로 감싸지 않는 방법!!

select * from room_master
WHERE date_created >= DATE_ADD(now(),INTERVAL -5 MINUTE)
And date_created <= NOW()

order by date_created asc;

 

 

 

 

 

쿼리 실행 후

 

 

 

오! 성공했다!!

 

그럼 이제 이걸 JPA로 구현해보자!!

 

findByDateCreatedGreaterThanEqual
AndDateCreatedLessThanEqualAnd
MemId(now().minusMinutes(10) , now(),test_ID);

 

findBy의 리턴타입은 Entity이고 해당하는 조건에 만족한다면 DB에서 해당하는 정보를 담을 겁니다.

 

 

*쿼리 해석

 

DateCreated Greater Than Equal     →     DateCreated(생성된 날짜) >=  '첫번째 파라미터' 

 

DateCreated Less Than Equal     →     DateCreated(생성된 날짜) <=  '두번째 파라미터' 

 

저는 이렇게 해서  '현재시간 기준으로 일정시간이 안에 생성된 데이터 찾기' 를 구현했습니다.

 

 

끝!!