MySQL에서 현재 날짜와 일치하는 레코드 업데이트 방법
MySQL에서는 CURDATE() 함수를 활용하면 오늘 날짜와 일치하는 레코드만 손쉽게 업데이트할 수 있습니다. 이번 글에서는 예제 테이블을 생성하고, 현재 날짜와 일치하는 마감일(DueDate)을 가진 레코드의 금액(Amount)을 변경하는 전체 과정을 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable1822 ( Amount int, DueDate date ); Query OK, 0 rows affected (0.00 sec)
2단계: 샘플 데이터 삽입
INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable1822 values(1000,'2019-10-11'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1822 values(500,'2019-11-30'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1822 values(700,'2018-11-30'); Query OK, 1 row affected (0.00 sec)
3단계: 저장된 데이터 조회
SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select * from DemoTable1822;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------+------------+ | Amount | DueDate | +--------+------------+ | 1000 | 2019-10-11 | | 500 | 2019-11-30 | | 700 | 2018-11-30 | +--------+------------+ 3 rows in set (0.00 sec)
4단계: 현재 날짜와 일치하는 레코드 업데이트
WHERE 절에 CURDATE() 함수를 사용하면 시스템의 현재 날짜와 DueDate가 일치하는 레코드만 선택하여 업데이트할 수 있습니다. 아래 쿼리는 해당 조건을 만족하는 행의 Amount 값을 5000으로 변경합니다.
mysql> update DemoTable1822 set Amount=5000 where DueDate=curdate(); Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
5단계: 업데이트 결과 확인
업데이트가 정상적으로 적용되었는지 테이블을 다시 조회해 보겠습니다.
mysql> select * from DemoTable1822;
실행 결과, 현재 날짜와 일치하는 레코드의 금액만 변경된 것을 확인할 수 있습니다.
+--------+------------+ | Amount | DueDate | +--------+------------+ | 1000 | 2019-10-11 | | 5000 | 2019-11-30 | | 700 | 2018-11-30 | +--------+------------+ 3 rows in set (0.00 sec)
핵심 정리
UPDATE 문의 WHERE 절에서 CURDATE() 함수를 비교 조건으로 사용하면, 실행 시점의 날짜와 일치하는 레코드만 동적으로 필터링할 수 있습니다. 이 방식은 매일 자동 실행되는 배치 작업이나 마감일 기반 결제 처리 등 날짜 조건이 필요한 다양한 상황에서 유용하게 활용됩니다.