Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 날짜 데이터에서 연도만 변경하는 방법

MySQL에서 날짜 데이터의 연도(year) 부분만 변경하려면 DATE_FORMAT() 함수를 UPDATE 명령과 함께 사용하면 됩니다. 이 방법을 사용하면 월과 일은 그대로 유지한 채 연도 값만 손쉽게 바꿀 수 있습니다.

기본 문법

UPDATE 테이블이름
SET 날짜컬럼이름 = DATE_FORMAT(날짜컬럼이름, '변경할연도-%m-%d');

예제 테이블 생성

문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 아래 쿼리로 테이블을 생성합니다.

mysql> create table ChangeYear
    -> (
    -> id int not null auto_increment,
    -> ArrivalTime date,
    -> PRIMARY KEY(id)
    -> );
Query OK, 0 rows affected (0.83 sec)

샘플 데이터 입력

INSERT 명령을 사용해 몇 개의 레코드를 입력합니다. 다양한 형태의 날짜 값을 넣어 보겠습니다.

mysql> insert into ChangeYear(ArrivalTime) values(date_add(now(),interval -2 year));
Query OK, 1 row affected, 1 warning (0.20 sec)

mysql> insert into ChangeYear(ArrivalTime) values('2012-10-24');
Query OK, 1 row affected (0.18 sec)

mysql> insert into ChangeYear(ArrivalTime) values('2016-3-21');
Query OK, 1 row affected (0.19 sec)

mysql> insert into ChangeYear(ArrivalTime) values('2015-4-24');
Query OK, 1 row affected (0.20 sec)

mysql> insert into ChangeYear(ArrivalTime) values(curdate());
Query OK, 1 row affected (0.20 sec)

입력된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from ChangeYear;

실행 결과는 다음과 같습니다.

+----+-------------+
| id | ArrivalTime |
+----+-------------+
| 1 | 2017-01-07 |
| 2 | 2012-10-24 |
| 3 | 2016-03-21 |
| 4 | 2015-04-24 |
| 5 | 2019-01-07 |
+----+-------------+
5 rows in set (0.00 sec)

연도만 변경하는 UPDATE 쿼리

이제 날짜 컬럼에서 연도만 변경하는 쿼리를 실행해 보겠습니다. 예제에서는 모든 레코드의 연도를 2019년으로 바꿔 보겠습니다.

mysql> update ChangeYear
    -> set ArrivalTime = DATE_FORMAT(ArrivalTime,'2019-%m-%d');
Query OK, 4 rows affected (0.12 sec)
Rows matched - 5 Changed - 4 Warnings - 0

참고로 'Rows matched - 5, Changed - 4'로 표시된 것은 이미 2019년이었던 첫 번째 행(id=1)은 실질적인 변경이 없었기 때문입니다.

변경 결과 확인

다시 SELECT 문으로 업데이트된 레코드를 확인해 보겠습니다.

mysql> select *from ChangeYear;

아래 출력 결과에서 볼 수 있듯이, 모든 레코드의 연도가 2019로 변경되었지만 월과 일은 원래 값 그대로 유지되었습니다.

+----+-------------+
| id | ArrivalTime |
+----+-------------+
|  1 | 2019-01-07  |
|  2 | 2019-10-24  |
|  3 | 2019-03-21  |
|  4 | 2019-04-24  |
|  5 | 2019-01-07  |
+----+-------------+
5 rows in set (0.00 sec)

정리

MySQL에서 날짜의 연도만 변경할 때는 DATE_FORMAT() 함수에 새로운 연도 값과 기존 월·일을 나타내는 포맷 문자열('%m-%d')을 조합하여 UPDATE 문에 적용하면 됩니다. 이 방식은 대량의 날짜 데이터에서 특정 연도를 일괄 수정해야 할 때 매우 유용합니다.