MySQL에서 하나의 datetime 필드에 다른 날짜·시간 값을 삽입(업데이트)하려면 UPDATE 명령어를 활용하면 됩니다. 이해를 돕기 위해 먼저 예제 테이블을 생성해 보겠습니다.
1. 테이블 생성하기
아래 쿼리로 AddDateTimeWithOther 테이블을 생성합니다.
mysql> create table AddDateTimeWithOther
-> (
-> Id int,
-> IssueDate datetime,
-> DueDate datetime
-> );
Query OK, 0 rows affected (0.69 sec)
테이블은 세 개의 컬럼으로 구성됩니다. Id(정수), IssueDate(발행일), DueDate(마감일)이며, 마감일 컬럼에 새로운 datetime 값을 삽입하는 실습을 진행합니다.
2. 샘플 데이터 삽입하기
INSERT 문을 사용해 레코드를 추가합니다. now() 함수로 현재 시각을 구하고, date_add() 함수로 연도를 더하거나 빼서 값을 지정합니다.
mysql> insert into AddDateTimeWithOther values(100, now(), date_add(now(), interval -3 year));
Query OK, 1 row affected (0.13 sec)
mysql> insert into AddDateTimeWithOther values(101, now(), date_add(now(), interval 2 year));
Query OK, 1 row affected (0.20 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 전체 레코드를 조회합니다.
mysql> select *from AddDateTimeWithOther;
실행 결과는 다음과 같습니다.
+------+---------------------+---------------------+
| Id | IssueDate | DueDate |
+------+---------------------+---------------------+
| 100 | 2018-12-11 17:33:28 | 2015-12-11 17:33:28 |
| 101 | 2018-12-11 17:33:37 | 2020-12-11 17:33:37 |
+------+---------------------+---------------------+
2 rows in set (0.00 sec)
4. UPDATE 문으로 DueDate 변경하기
이제 Id가 100인 레코드의 DueDate 값을 기존 '2015-12-11 17:33:28'에서 다른 날짜로 변경해 보겠습니다. 아래 쿼리는 현재 시각에서 1년 뒤의 날짜('2019-12-11 17:35:03')로 마감일을 업데이트합니다.
mysql> update AddDateTimeWithOther set DueDate = date_add(now(), interval 1 year) where Id = 100;
Query OK, 1 row affected (0.24 sec)
Rows matched: 1 Changed: 1 Warnings: 0
여기서 핵심은 WHERE 절입니다. WHERE 조건을 생략하면 테이블의 모든 행이 함께 수정되므로, 특정 레코드만 변경할 때는 반드시 조건을 지정해야 합니다.
5. 업데이트 결과 검증하기
다시 SELECT 문을 실행해 데이터가 정상적으로 변경되었는지 확인합니다.
mysql> select *from AddDateTimeWithOther;
실행 결과, DueDate가 성공적으로 업데이트된 것을 확인할 수 있습니다.
+------+---------------------+---------------------+
| Id | IssueDate | DueDate |
+------+---------------------+---------------------+
| 100 | 2018-12-11 17:33:28 | 2019-12-11 17:35:03 |
| 101 | 2018-12-11 17:33:37 | 2020-12-11 17:33:37 |
+------+---------------------+---------------------+
2 rows in set (0.00 sec)
정리
MySQL에서 datetime 필드에 새로운 날짜·시간 값을 삽입하는 방법은 간단합니다. UPDATE 문과 date_add(), now() 같은 날짜 함수를 조합하면 원하는 시점의 datetime 값을 손쉽게 계산하여 저장할 수 있습니다. interval 키워드 뒤에 year, month, day, hour 등 다양한 단위를 사용해 유연하게 날짜를 조작할 수 있다는 점도 기억해 두면 좋습니다.