MySQL에서 특정 날짜 기준으로 15일 이전의 레코드를 조회하려면 INTERVAL 개념과 DATE_SUB() 함수를 활용하면 됩니다. DATE_SUB()는 지정한 날짜에서 일정 기간을 빼는 함수로, INTERVAL과 함께 사용하면 원하는 시점 이전의 데이터를 손쉽게 필터링할 수 있습니다.
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1845
(
ArrivalDate date
);
Query OK, 0 rows affected (0.00 sec)
테이블에 샘플 데이터 삽입하기
insert 명령을 사용해 테이블에 여러 날짜 데이터를 입력합니다.
mysql> insert into DemoTable1845 values('2019-12-02');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1845 values('2019-11-18');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1845 values('2019-12-18');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1845 values('2019-12-25');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1845 values('2019-11-15');
Query OK, 1 row affected (0.00 sec)저장된 전체 레코드 확인하기
select 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1845;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------------+
| ArrivalDate |
+-------------+
| 2019-12-02 |
| 2019-11-18 |
| 2019-12-18 |
| 2019-12-25 |
| 2019-11-15 |
+-------------+
5 rows in set (0.00 sec)
현재 날짜 확인하기
NOW() 함수를 사용하면 현재 시스템 날짜와 시간을 확인할 수 있습니다.
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2019-12-02 20:47:05 |
+---------------------+
1 row in set (0.00 sec)
15일 이전 레코드 조회 쿼리
다음은 오늘 날짜를 기준으로 15일 이전의 레코드만 가져오는 쿼리입니다. WHERE 절에서 ArrivalDate 컬럼을 DATE_SUB(NOW(), INTERVAL 15 DAY) 결과와 비교합니다.
mysql> select * from DemoTable1845
where ArrivalDate < DATE_SUB(NOW(), INTERVAL 15 DAY);
실행 결과는 다음과 같습니다.
+-------------+
| ArrivalDate |
+-------------+
| 2019-11-15 |
+-------------+
1 row in set (0.00 sec)
결과를 보면 현재 날짜(2019-12-02)에서 15일을 뺀 2019-11-17보다 이전인 '2019-11-15' 레코드 하나만 정상적으로 조회된 것을 확인할 수 있습니다. 참고로 정확히 15일 전 날짜까지 포함하고 싶다면 비교 연산자를 <=로 변경하면 됩니다.