Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

อัปเดตข้อมูลในวันที่ตรงกับวันปัจจุบันใน MySQL ด้วย CURDATE()

สามารถอัปเดตข้อมูลเฉพาะแถวที่มีวันที่ตรงกับวันปัจจุบันได้โดยใช้ฟังก์ชัน 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() ก่อนเปรียบเทียบ