주니어 기초 코딩공부/Database 기초

[MYSQL] 일정 시간단위로 데이터 가져오는 방법 (하루, 한시간, 한달)

jju_developer 2023. 11. 24. 10:14
728x90

안녕하세요 jju_developer 입니다.

 

백엔드 엔지니어로 코딩을 하다보면 데이터베이스를 다룰 일이 정말 많은데용!

 

하면 할수록 자바로 코딩을 해야할지 아니면 쿼리에서 데이터를 뽑아올지 참 고민이 많이 되는 시점입니다...!

 

아무튼 오늘은 특정 데이터들의 무리속에서 내가 원하는 날짜의 데이터를 뽑아오는 방법에 대해 알아보겠습니다.

 

과일가게 table 이라는 이름의 데이터베이스가 있다고 가정을 해보겠습니다.

 

해당 과일가게 테이블의 컬럼에는 사용자이름 과 사과바구니, 구매일이 있다고 가정을 해보겠습니다.

 

이때 오늘날짜의 구매한 사과 바구니의 총 개수를 구하고 싶을때에는 어떻게 할까요?

select count(사과바구니) 
	from 과일가게 
 where 사용자이름 = 'jju' 
 and 구매일 >= DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00');

 

이름이 jju 인 사용자가 오늘만 몇개의 사과 바구니를 구매했는지 count  를 하면 됩니다.

 

 근데 한시간 마다 사과바구니를 몇개 팔았는지를 알고 싶을때에는 어떻게 하면 좋을까요?

 

select 사과바구니 
	from 과일가게 
where 구매일 > DATE_SUB(NOW(),INTERVAL 1 hour);

 

이렇게 조회를 하게 된다면 전체 과일가게에서 구매일에서 현재시간 ~ 1시간전 까지의 데이터를 뽑아올 수 있습니다.

 

이제 DATE_SUB(NOW(),INTERVAL 1 hour) 이부분을 잘 활용을 한다면

1시간 단위, 2시간 단위, 3시간 단위등 원하는 단위의 시간대를 착착 뽑아올수 있겠죵?

 

그렇다면! 

 

최근으로부터 한달전까지의 데이터를 보고 싶다!! 하면 어떻게 할까요?

DATE_SUB(NOW(),INTERVAL 1 month)

 

DATE_SUB(NOW(),INTERVAL 1 hour) ---> DATE_SUB(NOW(),INTERVAL 1 month) 

 

이렇게 시간을 달로 변경해주면 끝~!!

 

[응용]

※ DATE_SUB(NOW(),INTERVAL 1 year)

 구매일 between '2023-11-24' and '2023-12-30'

 

간단하지만 유용하게 여러곳에서 가져올수 있습니다.

 

그럼 오늘도 고생 많으셨습니다~!

728x90