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

MySQL – DATEDIFF로 오늘 기준 일주일 간격 날짜 조회하는 방법

오늘 날짜를 기준으로 정확히 일주일(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이 결과에 포함되며, 나머지 날짜는 조건에 맞지 않아 제외됩니다. 이 방식은 주기적인 배송 일정 확인이나 매주 반복되는 이벤트 날짜를 추출할 때 유용하게 활용할 수 있습니다.