본문 바로가기
서버/Mysql

SQL 일정 기간 이내 테이블 조회

by 코딩히어로 2022. 2. 16.
728x90

SQL문을 통해 데이터를 조회 시 한 달 이내 자료 조회, 일주일 이내 자료 조회 등과 같은

기간을 통한 조회방법이 필요한 경우가 많습니다.

이러한 기간조회 방식은 date_add라는 sql문을 통해 사용합니다.

 

SELECT * FROM cordinghero.test where date > date_add(now(),interval -1 month);

 

먼저 위의 구문에서 date_add 앞쪽에 기호가 어느 방향이냐에 따라서

조회하는 기간 이내인가 아니면 기간을 지난것인가를 결정합니다.

 

date > date_add 라면 뒤쪽에 -1 month이므로 한 달 이내라는 뜻이고

date < date_add 로 방향을 변경하면 한 달이 지난 데이터라는 뜻이 됩니다.

 

여기서 interval은 month 뿐만 아니라 day나 year 등을 사용할 수 있습니다.

이렇게 단일 테이블에서 조회하는 경우에는 간단하지만 만약 date값이 다른 테이블에 있다고

가정한다면 어떻게 조회해야 할까요?

 

먼저 다음과 같이 두 개의 테이블이 있다고 가정하겠습니다.

 

test 1

id data date
1 abc 2022-02-16
2 bbc 2022-01-02

test2

phone id
010-1111-2222 1
010-1234-1234 2

 

test 1은 등록된 날짜가 있고 test2에는 등록 phone 정보가 있습니다.

sql을 통해 한 달 이내에 등록된 사용자의 phone 정보를 조회하기 위해서는 다음과 같이 적용합니다.

 

select * from test2 where id in(select id from test1 where date > date_add(now(),interval -1 month));

 

첫 번째 select에서 조건이 되는 id 값에 in구문을 통해서 test 1에 id를 조회한 값을 넣어줍니다.

이렇게 조회를 하면 결과는 test 1에서 한 달 이내를 만족하는 id 1이 test2 id에 적용되어

조회된 테이블은 id 1을 만족하는 테이블 정보가 됩니다.

 

phone id
010-1111-2222 1

 

이렇게 in 구문을 통해 다른 테이블과 연동하여 사용할 수 있습니다.

728x90
반응형

댓글