MySQL에서 현재 날짜를 기준으로 최근 8개월 이내의 데이터를 조회하려면 INTERVAL 8 MONTH를 활용하면 됩니다. 조건절에 CURRENT_DATE() 함수와 함께 사용하면 손쉽게 원하는 기간의 레코드만 추출할 수 있습니다.
기본 쿼리 문법
select * from yourTableName where yourColumnName >= (CURRENT_DATE() - INTERVAL 8 MONTH);
참고: 이 글의 예제에서는 현재 날짜가 2018-02-06이라고 가정합니다. 즉, 2017년 6월 6일 이후의 입학일을 가진 레코드들이 조회됩니다.
예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성합니다. 학생 이름과 입학일을 저장하는 간단한 구조입니다.
mysql> create table DemoTable (StudentName varchar(100), AdmissionDate date); Query OK, 0 rows affected (0.75 sec)
샘플 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values('John','2019-01-21');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable values('Chris','2019-10-04');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable values('Robert','2018-02-01');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('David','2019-07-07');
Query OK, 1 row affected (0.15 sec)전체 레코드 확인하기
SELECT 문으로 테이블에 저장된 모든 데이터를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------------+---------------+ | StudentName | AdmissionDate | +-------------+---------------+ | John | 2019-01-21 | | Chris | 2019-10-04 | | Robert | 2018-02-01 | | David | 2019-07-07 | +-------------+---------------+ 4 rows in set (0.00 sec)
8개월 이내 레코드 조회 쿼리 실행
이제 CURRENT_DATE() - INTERVAL 8 MONTH를 조건으로 사용하여, 최근 8개월 이내에 입학한 학생들만 조회하는 쿼리를 실행합니다.
mysql> select *from DemoTable where AdmissionDate >= (CURRENT_DATE() - INTERVAL 8 MONTH);
실행 결과는 다음과 같습니다.
+-------------+---------------+ | StudentName | AdmissionDate | +-------------+---------------+ | John | 2019-01-21 | | Chris | 2019-10-04 | | David | 2019-07-07 | +-------------+---------------+ 3 rows in set (0.00 sec)
결과 분석
출력 결과를 보면 입학일이 2018-02-01인 'Robert'는 기준일(2018-02-06)로부터 8개월 범위에 포함되지 않아 결과에서 제외된 것을 확인할 수 있습니다. 반면 나머지 세 명의 학생은 조건을 만족하므로 정상적으로 조회되었습니다.
이처럼 INTERVAL 키워드와 날짜 함수를 조합하면 월 단위뿐 아니라 DAY, YEAR 등 다양한 단위로 원하는 기간의 데이터를 유연하게 필터링할 수 있습니다.