কম্পিউটার টিউটোরিয়াল

MySQL에서 DATE() 함수로 날짜 부분만 비교해 레코드 업데이트하기

DATE(날짜시간컬럼)으로 시간 부분을 떼고 날짜만 비교하면 특정 날짜의 레코드를 쉽게 업데이트할 수 있습니다.

구문

UPDATE 테이블 SET 컬럼=값 WHERE DATE(날짜시간컬럼) = CURDATE();

테이블 생성 및 데이터 삽입

mysql> CREATE TABLE DemoTable1816 (
    -> Name VARCHAR(20),
    -> JoiningDate DATETIME
    -> );
Query OK, 0 rows affected (0.00 sec)
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)

데이터 조회

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)

오늘 날짜(2019-11-30)와 매칭되는 행 업데이트

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)

성능 팁: DATE(컬럼) 연산은 인덱스를 사용 못 합니다. 대용량이면 WHERE JoiningDate >= '2019-11-30' AND JoiningDate < '2019-12-01'처럼 범위 조건으로 인덱스 활용하세요.

  1. Java ব্যবহার করে MySQL কলামে DATE ইনসার্ট করার পদ্ধতি

  2. Java MySQL ব্যবহার করে MySQL টেবিল আপডেট করা

  3. MySQL-এ একটি কলাম আপডেট করার সেরা পদ্ধতি (UPDATE SET)

  4. MySQL-এ কাস্টম ফাংশন ব্যবহার করে ডেটা ভ্যালিডেট করা