MySQL에서 현재 날짜(CURDATE())부터 3개월 전까지의 기간에 해당하는 데이터를 조회하려면 BETWEEN 연산자와 INTERVAL 키워드를 함께 사용하면 됩니다. 이 방법은 최근 3개월 이내에 등록된 기록만 필터링할 때 특히 유용합니다.
테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> AdmissionDate date
-> );
Query OK, 0 rows affected (0.84 sec)
데이터 삽입하기
insert 명령을 사용하여 테이블에 샘플 레코드를 추가합니다.
mysql> insert into DemoTable values('2019-09-30');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('2019-10-01');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2019-03-30');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('2019-04-24');
Query OK, 1 row affected (0.17 sec)전체 데이터 조회하기
select 문을 사용하여 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+---------------+
| AdmissionDate |
+---------------+
| 2019-09-30 |
| 2019-10-01 |
| 2019-03-30 |
| 2019-04-24 |
+---------------+
4 rows in set (0.00 sec)
최근 3개월 데이터 조회 쿼리
다음은 MySQL에서 현재 날짜와 현재 날짜로부터 3개월 전 사이의 날짜를 선택하는 쿼리입니다.
mysql> select *from DemoTable WHERE AdmissionDate BETWEEN curdate() - INTERVAL 3 MONTH AND curdate();
출력 결과
+---------------+
| AdmissionDate |
+---------------+
| 2019-03-30 |
| 2019-04-24 |
+---------------+
2 rows in set (0.00 sec)
쿼리 동작 원리
CURDATE() 함수는 오늘 날짜를 반환하며, 여기서 INTERVAL 3 MONTH를 빼면 정확히 3개월 전 날짜가 계산됩니다. BETWEEN은 시작일과 종료일을 모두 포함하는 범위 조건을 지정하므로, 위 쿼리는 입학일(AdmissionDate)이 최근 3개월 이내인 레코드만 반환합니다. 실행 결과에서 확인할 수 있듯이 2019년 9월과 10월의 데이터는 범위에서 제외되고, 3개월 구간에 속하는 3월 30일과 4월 24일 데이터만 조회됩니다.