Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

현재 날짜 + 2주 이전의 레코드를 조회하는 MySQL 쿼리 방법

현재 날짜로부터 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 등으로도 변경하여 다양하게 활용할 수 있습니다.