오늘 날짜를 기준으로 정확히 일주일(7일) 간격으로 차이가 나는 날짜를 조회하려면 DATEDIFF 함수를 활용하면 됩니다. 먼저 현재 날짜부터 확인해 보겠습니다.
mysql> select curdate();
+------------+
| curdate() |
+------------+
| 2019-12-20 |
+------------+
1 row in set (0.00 sec)
테이블 생성하기
예제에 사용할 테이블을 먼저 생성합니다.
mysql> create table DemoTable1990
(
ShippingDate date
);
Query OK, 0 rows affected (0.99 sec)
샘플 데이터 삽입하기
INSERT 명령어를 사용해 배송 날짜(ShippingDate) 레코드를 몇 개 추가합니다.
mysql> insert into DemoTable1990 values('2019-12-13');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1990 values('2019-12-21');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1990 values('2019-12-20');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1990 values('2019-12-24');
Query OK, 1 row affected (0.13 sec)전체 레코드 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select * from DemoTable1990;
실행 결과는 다음과 같습니다.
+--------------+
| ShippingDate |
+--------------+
| 2019-12-13 |
| 2019-12-21 |
| 2019-12-20 |
| 2019-12-24 |
+--------------+
4 rows in set (0.00 sec)
일주일 간격 날짜 조회 쿼리
다음은 오늘 날짜와 7일 간격으로 차이가 나는 날짜만 선택하는 쿼리입니다.
mysql> select * from DemoTable1990 where datediff(curdate(),ShippingDate)%7=0;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------------+
| ShippingDate |
+--------------+
| 2019-12-13 |
| 2019-12-20 |
+--------------+
2 rows in set (0.04 sec)
쿼리 동작 원리
DATEDIFF(curdate(), ShippingDate)는 현재 날짜와 배송 날짜 사이의 일수 차이를 계산합니다. 여기에 %7=0 조건을 더하면 그 차이가 7의 배수인 경우, 즉 정확히 일주일, 이주일처럼 7일 단위로 떨어지는 날짜만 필터링할 수 있습니다.
현재 날짜가 2019-12-20이므로, 정확히 7일 전인 2019-12-13과 당일인 2019-12-20이 결과에 포함되며, 나머지 날짜는 조건에 맞지 않아 제외됩니다. 이 방식은 주기적인 배송 일정 확인이나 매주 반복되는 이벤트 날짜를 추출할 때 유용하게 활용할 수 있습니다.