สามารถอัปเดตข้อมูลเฉพาะแถวที่มีวันที่ตรงกับวันปัจจุบันได้โดยใช้ฟังก์ชัน CURDATE() ในเงื่อนไข WHERE ของคำสั่ง UPDATE
Syntax
UPDATE table_name SET column_name = new_value WHERE date_column = CURDATE();
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูล
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)
ข้อมูลต้นฉบับ (สมมติวันนี้คือ 2019-11-30):
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)
2. อัปเดต Amount = 5000 เฉพาะแถวที่ DueDate = วันนี้
mysql> update DemoTable1822 set Amount = 5000 where DueDate = curdate(); Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
3. ตรวจสอบผลลัพธ์
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() | วันที่ปัจจุบัน (DATE) | 2019-11-30 |
| CURRENT_DATE() | เหมือน CURDATE() | 2019-11-30 |
| NOW() | วันที่และเวลาปัจจุบัน (DATETIME) | 2019-11-30 14:30:00 |
| CURTIME() | เวลาปัจจุบัน (TIME) | 14:30:00 |
กรณีคอลัมน์เป็น DATETIME (ต้องใช้ DATE())
UPDATE table_name SET column_name = new_value WHERE DATE(datetime_column) = CURDATE();
สรุป: ใช้ WHERE date_column = CURDATE() เพื่ออัปเดตเฉพาะวันนี้ หากคอลัมน์เป็น DATETIME ให้ห่อด้วย DATE() ก่อนเปรียบเทียบ