WHERE 날짜컬럼 = CURDATE()로 오늘 날짜와 정확히 일치하는 행만 업데이트할 수 있습니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable1822 (
-> Amount INT,
-> DueDate DATE
-> );
Query OK, 0 rows affected (0.00 sec)
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)
데이터 조회
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)
오늘(2019-11-30) 날짜 행 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
업데이트 후
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)
주의: CURDATE()는 날짜만, NOW()는 날짜+시간. DATETIME 컬럼이면 DATE(컬럼) = CURDATE()로 비교. 인덱스 활용하려면 WHERE DueDate >= CURDATE() AND DueDate < CURDATE() + INTERVAL 1 DAY 형태 권장.