MySQL에서 특정 날짜 컬럼에 저장된 모든 레코드에 대해 다가오는 일요일(Coming Sunday)의 날짜를 계산하는 방법을 알아보겠습니다. 이 작업은 WEEKDAY() 함수와 INTERVAL 연산을 조합하면 간단하게 처리할 수 있습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable(GetSundayDate date);
Query OK, 0 rows affected (0.44 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 날짜 데이터를 몇 개 삽입합니다.
mysql> insert into DemoTable values('2019-08-07');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('2018-09-05');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('2019-09-12');
Query OK, 1 row affected (0.17 sec)3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+---------------+
| GetSundayDate |
+---------------+
| 2019-08-07 |
| 2018-09-05 |
| 2019-09-12 |
+---------------+
3 rows in set (0.00 sec)
4. 다가오는 일요일 날짜 계산하기
컬럼의 모든 날짜에 대해 다가오는 일요일 날짜를 구하는 쿼리는 다음과 같습니다.
mysql> SELECT date(GetSundayDate + INTERVAL 6 - weekday(GetSundayDate) DAY) AS ComingSundayDate from DemoTable;
실행 결과는 다음과 같습니다.
+------------------+
| ComingSundayDate |
+------------------+
| 2019-08-11 |
| 2018-09-09 |
| 2019-09-15 |
+------------------+
3 rows in set (0.00 sec)
쿼리 동작 원리
이 쿼리가 어떻게 동작하는지 살펴보겠습니다.
- MySQL의
WEEKDAY()함수는 월요일을 0으로 반환하고, 화요일은 1, ... 일요일은 6을 반환합니다. - 따라서
6 - WEEKDAY(날짜)를 계산하면 해당 날짜부터 다가오는 일요일까지 남은 일수가 됩니다. - 예를 들어 2019-08-07은 수요일(WEEKDAY 값 2)이므로, 6 - 2 = 4일 후인 2019-08-11이 다가오는 일요일이 됩니다.
- 마지막으로
DATE()함수를 사용해 결과를 날짜 형식으로 변환하여 깔끔하게 출력합니다.
이처럼 WEEKDAY() 함수와 INTERVAL 연산만 활용하면 별도의 복잡한 로직 없이도 모든 날짜 레코드에 대해 다가오는 일요일 날짜를 손쉽게 구할 수 있습니다.