MySQL에서 UPDATE 문과 DATE_ADD() 함수를 함께 사용하면 테이블에 저장된 모든 날짜 데이터를 한 번의 쿼리로 손쉽게 업데이트할 수 있습니다. 이 글에서는 실제 예제를 통해 전체 날짜를 일괄 변경하는 과정을 단계별로 살펴보겠습니다.
1단계: 테이블 생성하기
먼저 클라이언트 프로젝트 마감일을 저장할 테이블을 생성합니다.
mysql> create table DemoTable
(
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientProjectDueDate date
);
Query OK, 0 rows affected (1.19 sec)2단계: 샘플 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 여러 개의 날짜 레코드를 추가합니다.
mysql> insert into DemoTable(ClientProjectDueDate) values('2018-01-21');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(ClientProjectDueDate) values('2019-03-25');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(ClientProjectDueDate) values('2013-11-01');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(ClientProjectDueDate) values('2015-06-14');
Query OK, 1 row affected (0.23 sec)3단계: 현재 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable;
실행 결과는 다음과 같습니다.
+----------+----------------------+ | ClientId | ClientProjectDueDate | +----------+----------------------+ | 1 | 2018-01-21 | | 2 | 2019-03-25 | | 3 | 2013-11-01 | | 4 | 2015-06-14 | +----------+----------------------+ 4 rows in set (0.00 sec)
4단계: UPDATE와 DATE_ADD()로 모든 날짜 업데이트하기
테이블의 모든 날짜를 업데이트하는 핵심 쿼리는 다음과 같습니다. 아래 예제에서는 각 날짜에 2년을 더합니다.
mysql> update DemoTable set ClientProjectDueDate=date_add(ClientProjectDueDate,INTERVAL 2 YEAR); Query OK, 4 rows affected (0.71 sec) Rows matched: 4 Changed: 4 Warnings: 0
DATE_ADD() 함수는 첫 번째 인자로 날짜 값을 받고, 두 번째 인자로 더할 시간 간격(INTERVAL)을 받습니다. 위 쿼리처럼 WHERE 절 없이 실행하면 테이블의 모든 행에 적용되며, 필요에 따라 INTERVAL 30 DAY, INTERVAL 6 MONTH 등 다양한 단위로 변경할 수 있습니다.
5단계: 업데이트 결과 확인하기
변경된 데이터를 다시 한번 조회해 보겠습니다.
mysql> select * from DemoTable;
모든 날짜가 정확히 2년씩 증가한 것을 확인할 수 있습니다.
+----------+----------------------+ | ClientId | ClientProjectDueDate | +----------+----------------------+ | 1 | 2020-01-21 | | 2 | 2021-03-25 | | 3 | 2015-11-01 | | 4 | 2017-06-14 | +----------+----------------------+ 4 rows in set (0.00 sec)
참고 사항
전체가 아닌 특정 조건의 행만 업데이트하고 싶다면 WHERE 절을 추가하면 됩니다. 예를 들어 특정 클라이언트의 날짜만 변경하려면 다음과 같이 작성할 수 있습니다.
mysql> update DemoTable set ClientProjectDueDate=date_add(ClientProjectDueDate,INTERVAL 1 YEAR)
-> where ClientId = 3;또한 날짜를 줄여야 하는 경우에는 DATE_SUB() 함수를 사용하면 됩니다. 이처럼 UPDATE와 날짜 함수를 조합하면 대량의 날짜 데이터도 복잡한 작업 없이 간단하게 관리할 수 있습니다.