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

MySQL에서 DATETIME 필드의 날짜를 업데이트하는 방법

MySQL DATETIME 필드 날짜 업데이트 개요

MySQL에서 DATETIME 필드의 날짜 부분만 수정하고 싶다면, 산술 연산자인 빼기(-)와 INTERVAL 키워드를 함께 사용하면 됩니다. 이 방법을 활용하면 특정 조건에 맞는 레코드의 날짜를 원하는 일수만큼 앞당기거나 미룰 수 있습니다.

기본 문법

UPDATE yourTableName
SET yourDateTimeColumnName = yourDateTimeColumnName - INTERVAL yourValue DAY
WHERE DATE(yourDateTimeColumnName) = 'yourDateValue';

위 문법에서 - INTERVAL yourValue DAY는 지정한 일수만큼 날짜를 감소시키고, 반대로 더하고 싶다면 + INTERVAL yourValue DAY로 변경하면 됩니다.

예제 테이블 생성하기

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

mysql> CREATE TABLE updateDateDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ArrivalDate datetime
-> );
Query OK, 0 rows affected (0.66 sec)

샘플 데이터 삽입

INSERT 명령어를 사용해 테이블에 여러 개의 레코드를 추가합니다.

mysql> INSERT INTO updateDateDemo(ArrivalDate) VALUES('2011-01-13');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO updateDateDemo(ArrivalDate) VALUES('2013-04-21');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO updateDateDemo(ArrivalDate) VALUES('2016-12-22');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO updateDateDemo(ArrivalDate) VALUES('2017-02-25');
Query OK, 1 row affected (0.27 sec)
mysql> INSERT INTO updateDateDemo(ArrivalDate) VALUES('2018-08-19');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO updateDateDemo(ArrivalDate) VALUES('2019-02-27');
Query OK, 1 row affected (0.24 sec)

저장된 데이터 확인하기

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

mysql> SELECT * FROM updateDateDemo;

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

+----+---------------------+
| Id | ArrivalDate |
+----+---------------------+
| 1 | 2011-01-13 00:00:00 |
| 2 | 2013-04-21 00:00:00 |
| 3 | 2016-12-22 00:00:00 |
| 4 | 2017-02-25 00:00:00 |
| 5 | 2018-08-19 00:00:00 |
| 6 | 2019-02-27 00:00:00 |
+----+---------------------+
6 rows in set (0.00 sec)

DATETIME 필드의 날짜 업데이트 실행

이제 DATETIME 필드의 날짜를 업데이트하는 쿼리를 실행해 보겠습니다. 아래 예제에서는 '2019-02-27' 날짜의 레코드를 찾아 7일을 빼서 업데이트합니다.

mysql> UPDATE updateDateDemo
-> SET ArrivalDate = ArrivalDate - INTERVAL 7 DAY
-> WHERE DATE(ArrivalDate) = '2019-02-27';
Query OK, 1 row affected (0.13 sec)
Rows matched: 1 Changed: 1 Warnings: 0

WHERE 절에서 DATE() 함수를 사용하면 시간 정보를 제외한 날짜 값만 비교할 수 있어, 정확히 원하는 날짜의 레코드만 대상으로 지정할 수 있습니다.

업데이트 결과 확인

업데이트가 정상적으로 적용되었는지 다시 조회해 보겠습니다.

mysql> SELECT * FROM updateDateDemo;

결과를 보면 Id가 6인 레코드의 날짜가 '2019-02-27'에서 '2019-02-20'으로 정확히 7일 감소한 것을 확인할 수 있습니다.

+----+---------------------+
| Id | ArrivalDate |
+----+---------------------+
| 1 | 2011-01-13 00:00:00 |
| 2 | 2013-04-21 00:00:00 |
| 3 | 2016-12-22 00:00:00 |
| 4 | 2017-02-25 00:00:00 |
| 5 | 2018-08-19 00:00:00 |
| 6 | 2019-02-20 00:00:00 |
+----+---------------------+
6 rows in set (0.00 sec)

정리

MySQL에서 DATETIME 필드의 날짜를 업데이트하는 핵심은 INTERVAL 표현식입니다. - INTERVAL n DAY로 날짜를 줄이거나 + INTERVAL n DAY로 늘릴 수 있으며, DAY 외에도 MONTH, YEAR, HOUR, MINUTE 등 다양한 단위를 지원합니다. WHERE 절에 DATE() 함수를 함께 사용하면 특정 날짜의 레코드만 선택적으로 수정할 수 있어 매우 유용합니다.