MySQL에서 테이블의 날짜 값에 30일을 더하려면 UPDATE 명령과 함께 ADDDATE() 함수를 사용하면 됩니다. 기본 문법은 다음과 같습니다.
UPDATE yourTableName
SET yourDateColumnName=ADDDATE(yourDateColumnName,INTERVAL 30 DAY);
위 문법을 실제로 이해하기 위해 예제 테이블을 하나 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table Add30DayDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> ShippingDate date,
-> PRIMARY KEY(ID)
-> );
Query OK, 0 rows affected (0.76 sec)
샘플 데이터 삽입
INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into Add30DayDemo(ShippingDate) values('2019-02-04');
Query OK, 1 row affected (0.20 sec)
mysql> insert into Add30DayDemo(ShippingDate) values('2018-11-15');
Query OK, 1 row affected (0.18 sec)
mysql> insert into Add30DayDemo(ShippingDate) values('2013-05-18');
Query OK, 1 row affected (0.15 sec)
mysql> insert into Add30DayDemo(ShippingDate) values('2017-08-25');
Query OK, 1 row affected (0.20 sec)
mysql> insert into Add30DayDemo(ShippingDate) values('2016-03-01');
Query OK, 1 row affected (0.12 sec)
mysql> insert into Add30DayDemo(ShippingDate) values('2015-09-03');
Query OK, 1 row affected (0.13 sec)현재 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from Add30DayDemo;
실행 결과는 다음과 같습니다.
+----+--------------+
| Id | ShippingDate |
+----+--------------+
| 1 | 2019-02-04 |
| 2 | 2018-11-15 |
| 3 | 2013-05-18 |
| 4 | 2017-08-25 |
| 5 | 2016-03-01 |
| 6 | 2015-09-03 |
+----+--------------+
6 rows in set (0.00 sec)
ADDDATE()로 30일 추가하기
이제 UPDATE 문과 ADDDATE() 함수를 사용해 모든 배송일(ShippingDate)에 30일을 더하는 쿼리를 실행합니다.
mysql> update Add30DayDemo
-> SET ShippingDate=ADDDATE(ShippingDate,INTERVAL 30 DAY);
Query OK, 6 rows affected (0.44 sec)
Rows matched: 6 Changed: 6 Warnings: 0
업데이트가 완료되었으니 다시 한번 테이블 데이터를 확인해 보겠습니다.
mysql> select *from Add30DayDemo;
날짜가 30일씩 증가한 것을 확인할 수 있습니다.
+----+--------------+
| Id | ShippingDate |
+----+--------------+
| 1 | 2019-03-06 |
| 2 | 2018-12-15 |
| 3 | 2013-06-17 |
| 4 | 2017-09-24 |
| 5 | 2016-03-31 |
| 6 | 2015-10-03 |
+----+--------------+
6 rows in set (0.00 sec)
참고 사항
ADDDATE()는 DATE_ADD()와 동일하게 동작하며, INTERVAL 단위를 DAY 대신 MONTH, YEAR, HOUR 등으로 바꾸면 다양한 기간 연산이 가능합니다. 또한 특정 조건의 행만 업데이트하고 싶다면 WHERE 절을 추가하면 됩니다. 예를 들어 WHERE Id = 1을 붙이면 해당 레코드의 날짜만 변경됩니다.