MySQL에서 지난 6개월간의 레코드 선택하기
뉴스 테이블의 레코드는 일반적으로 날짜를 기준으로 저장됩니다. 이때 MySQL에서 제공하는 date_sub() 함수를 사용하면 특정 기간(예: 최근 6개월) 동안의 레코드를 간단하게 조회할 수 있습니다.
date_sub() 함수는 지정한 날짜에서 일정한 시간 간격을 빼는 역할을 하며, now() 함수와 함께 사용하면 현재 시점을 기준으로 과거 데이터를 필터링할 수 있습니다.
기본 문법
select * from yourTableName where yourDateTimeColumnName >= date_sub(now(), interval 6 month);
1. 테스트용 테이블 생성
먼저 뉴스 ID와 게시 날짜만 포함된 NEWS 테이블을 생성해 보겠습니다.
mysql> create table Newstable
-> (
-> NewsId int,
-> NewsDatetime datetime
-> );
Query OK, 0 rows affected (0.66 sec)
2. 레코드 삽입
insert 명령어를 사용해 테이블에 샘플 레코드를 추가합니다.
mysql> insert into Newstable values(101,'2018-2-10');
Query OK, 1 row affected (0.18 sec)
mysql> insert into Newstable values(102,'2018-12-10');
Query OK, 1 row affected (0.19 sec)
mysql> insert into Newstable values(103,'2018-3-14');
Query OK, 1 row affected (0.14 sec)
mysql> insert into Newstable values(104,'2018-12-12');
Query OK, 1 row affected (0.29 sec)
mysql> insert into Newstable values(105,'2018-4-21');
Query OK, 1 row affected (0.09 sec)
mysql> insert into Newstable values(106,'2018-6-30');
Query OK, 1 row affected (0.22 sec)
3. 전체 레코드 확인
select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from Newstable;
출력 결과
+--------+---------------------+
| NewsId | NewsDatetime |
+--------+---------------------+
| 101 | 2018-02-10 00:00:00 |
| 102 | 2018-12-10 00:00:00 |
| 103 | 2018-03-14 00:00:00 |
| 104 | 2018-12-12 00:00:00 |
| 105 | 2018-04-21 00:00:00 |
| 106 | 2018-06-30 00:00:00 |
+--------+---------------------+
6 rows in set (0.00 sec)
4. 최근 6개월 레코드 조회 쿼리
이제 date_sub() 함수를 활용해 최근 6개월 동안 발행된 뉴스만 조회하는 쿼리를 실행합니다.
mysql> select *from Newstable where NewsDatetime > date_sub(now(), Interval 6 month);
출력 결과
+--------+---------------------+
| NewsId | NewsDatetime |
+--------+---------------------+
| 102 | 2018-12-10 00:00:00 |
| 104 | 2018-12-12 00:00:00 |
| 106 | 2018-06-30 00:00:00 |
+--------+---------------------+
3 rows in set (0.00 sec)
위 결과를 보면 현재 시점을 기준으로 지난 6개월 이내에 발행된 뉴스 레코드만 정확히 필터링되어 반환된 것을 확인할 수 있습니다. 이 방식은 인덱스가 설정된 datetime 컬럼과 함께 사용하면 대용량 테이블에서도 효율적으로 동작합니다.