현재 날짜로부터 2주 후보다 이전인 레코드 조회하기
MySQL에서 현재 날짜(current date)에 2주를 더한 날짜보다 이전인 레코드를 조회하려면 DATE_ADD() 함수와 CURDATE() 함수를 함께 사용하면 됩니다.
기본 문법
다음과 같은 문법을 사용합니다.
SELECT * FROM yourTableName
WHERE yourColumnName < DATE_ADD(CURDATE(), INTERVAL 2 WEEK);
이 문법은 현재 날짜에 2주를 더한 날짜보다 작은(이전인) 값만 필터링하여 가져옵니다.
현재 날짜 확인하기
먼저 이 예제에서 사용된 현재 날짜는 다음과 같습니다.
mysql> SELECT CURDATE();
+------------+
| CURDATE() |
+------------+
| 2019-10-20 |
+------------+
1 row in set (0.00 sec)
예제 테이블 생성하기
실습을 위해 먼저 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable1607
-> (
-> ShippingDate date
-> );
Query OK, 0 rows affected (0.58 sec)
데이터 삽입하기
INSERT 명령을 사용하여 테이블에 레코드를 추가합니다.
mysql> INSERT INTO DemoTable1607 VALUES('2019-10-20');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable1607 VALUES('2019-11-04');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable1607 VALUES('2019-10-05');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable1607 VALUES('2019-09-21');
Query OK, 1 row affected (0.18 sec)전체 레코드 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> SELECT * FROM DemoTable1607;
실행 결과는 다음과 같습니다.
+--------------+
| ShippingDate |
+--------------+
| 2019-10-20 |
| 2019-11-04 |
| 2019-10-05 |
| 2019-09-21 |
+--------------+
4 rows in set (0.00 sec)
현재 날짜 + 2주 이전 레코드 조회 쿼리
이제 현재 날짜에 2주를 더한 날짜(2019-11-03)보다 이전인 레코드를 조회하는 쿼리를 실행해 보겠습니다.
mysql> SELECT * FROM DemoTable1607
-> WHERE ShippingDate < DATE_ADD(CURDATE(), INTERVAL 2 WEEK);
실행 결과는 다음과 같습니다.
+--------------+
| ShippingDate |
+--------------+
| 2019-10-20 |
| 2019-10-05 |
| 2019-09-21 |
+--------------+
3 rows in set (0.06 sec)
결과 분석
현재 날짜(2019-10-20)에 2주를 더하면 2019-11-03이 됩니다. 따라서 그보다 이전 날짜인 2019-10-20, 2019-10-05, 2019-09-21 세 개의 레코드만 조회되었고, 2019-11-04는 기준 날짜보다 이후이므로 결과에서 제외되었습니다.
이처럼 DATE_ADD(CURDATE(), INTERVAL n WEEK) 구문을 활용하면 현재 날짜를 기준으로 원하는 주 단위의 기간을 손쉽게 계산하여 데이터를 필터링할 수 있습니다. INTERVAL 단위는 DAY, MONTH, YEAR 등으로도 변경하여 다양하게 활용할 수 있습니다.