MySQL에서 날짜(datetime) 열에 저장된 모든 레코드에 1년을 더하려면 DATE_ADD() 함수를 사용하면 됩니다. 이 함수는 지정한 날짜에 원하는 시간 간격(interval)을 더한 값을 반환합니다.
1. 테이블 생성하기
먼저 datetime 타입의 열을 가진 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> JoiningDate datetime
-> );
Query OK, 0 rows affected (0.59 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 몇 개의 날짜 레코드를 삽입합니다.
mysql> insert into DemoTable values('2015-01-21');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2017-04-02');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('2018-12-31');
Query OK, 1 row affected (0.16 sec)3. 저장된 레코드 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+---------------------+
| JoiningDate |
+---------------------+
| 2015-01-21 00:00:00 |
| 2017-04-02 00:00:00 |
| 2018-12-31 00:00:00 |
+---------------------+
3 rows in set (0.00 sec)
4. DATE_ADD()로 1년 추가하기
이제 DATE_ADD() 함수를 사용하여 JoiningDate 열의 각 날짜에 1년을 더하는 쿼리를 실행합니다.
mysql> select date_add(JoiningDate, interval 1 year) from DemoTable;
실행 결과는 다음과 같습니다.
+----------------------------------------+
| date_add(JoiningDate, interval 1 year) |
+----------------------------------------+
| 2016-01-21 00:00:00 |
| 2018-04-02 00:00:00 |
| 2019-12-31 00:00:00 |
+----------------------------------------+
3 rows in set (0.00 sec)
추가 팁
위 예제는 조회 시에만 1년이 추가된 값을 보여줍니다. 만약 테이블의 실제 데이터를 영구적으로 변경하고 싶다면 UPDATE 문과 함께 사용할 수 있습니다.
mysql> update DemoTable
-> set JoiningDate = date_add(JoiningDate, interval 1 year);
Query OK, 3 rows affected (0.12 sec)
또한 'interval 1 year' 대신 'interval 5 year', 'interval 1 month', 'interval 30 day' 등 다양한 단위를 활용해 원하는 기간만큼 날짜를 조정할 수 있습니다. 반대로 날짜에서 기간을 빼고 싶다면 DATE_SUB() 함수를 사용하면 됩니다.