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

MySQL date() 함수로 날짜 조건을 일치시켜 테이블 열 업데이트하는 방법

MySQL에서 date() 함수를 사용해 날짜를 비교하고 특정 열을 업데이트하려면 아래와 같은 문법을 사용합니다.

update yourTableName set yourColumnName=yourValue where date(yourColumnName)=curdate();

여기서 date() 함수는 datetime 타입의 값에서 날짜 부분만 추출하고, curdate()는 현재 날짜를 반환합니다. 두 값을 비교하여 조건에 맞는 행만 업데이트할 수 있습니다.

예제 테이블 생성

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1816
    (
    Name varchar(20),
    JoiningDate datetime
    );
Query OK, 0 rows affected (0.00 sec)

샘플 데이터 삽입

insert 명령어를 사용하여 테이블에 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable1816 values('Chris','2019-11-29 12:34:50');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1816 values('David','2019-11-30 11:00:00');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1816 values('Mike','2018-11-30 10:20:30');
Query OK, 1 row affected (0.00 sec)

테이블 데이터 조회

select 문으로 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select * from DemoTable1816;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-------+---------------------+
| Name  | JoiningDate         |
+-------+---------------------+
| Chris | 2019-11-29 12:34:50 |
| David | 2019-11-30 11:00:00 |
| Mike  | 2018-11-30 10:20:30 |
+-------+---------------------+
3 rows in set (0.00 sec)

date() 함수로 날짜 조건에 맞춰 열 업데이트

이제 날짜를 비교하여 열을 업데이트하는 쿼리를 실행해 보겠습니다. JoiningDate의 날짜가 오늘(curdate())과 일치하는 행의 Name을 'Robert'로 변경합니다.

mysql> update DemoTable1816 set Name='Robert' where date(JoiningDate)=curdate();
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1 Warnings: 0

업데이트 결과 확인

업데이트 후 테이블 레코드를 다시 한번 확인해 보겠습니다.

mysql> select * from DemoTable1816;

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

+--------+---------------------+
| Name   | JoiningDate         |
+--------+---------------------+
| Chris  | 2019-11-29 12:34:50 |
| Robert | 2019-11-30 11:00:00 |
| Mike   | 2018-11-30 10:20:30 |
+--------+---------------------+
3 rows in set (0.00 sec)

결과를 보면 David의 레코드가 Robert로 변경된 것을 확인할 수 있습니다. 이 예제에서는 curdate()가 '2019-11-30'일 때 실행되었기 때문에, JoiningDate가 '2019-11-30 11:00:00'인 행의 날짜 부분만 일치하여 해당 행만 업데이트되었습니다. 시간 정보까지 정확히 일치해야 하는 경우라면 now() 함수를 사용하거나 datetime 전체를 비교하면 됩니다.