산술 연산자 빼기(-)를 사용하여 날짜/시간 필드의 날짜를 업데이트합니다.
구문은 다음과 같습니다.
update yourTableName set yourDateTimeColumnName=yourDateTimeColumnName - interval yourValue day where date(yourDateTimeColumnName)=’yourDateValue’;
위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table updateDateDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> ArrivalDate datetime -> ); Query OK, 0 rows affected (0.66 sec)
삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오.
쿼리는 다음과 같습니다
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 필드의 날짜를 업데이트하는 쿼리입니다.
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
이제 테이블에서 업데이트된 레코드를 확인하십시오.
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-20 00:00:00 | +----+---------------------+ 6 rows in set (0.00 sec)