ใช้คำสั่ง UPDATE โดยไม่มี WHERE ร่วมกับฟังก์ชัน ADDTIME() เพื่ออัปเดตข้อมูลทุกแถวในตารางพร้อมกัน (Batch Update)
ตัวอย่างการใช้งาน
1. สร้างตารางเก็บเวลา
mysql> CREATE TABLE DemoTable (
BreakfastTime TIME
);
Query OK, 0 rows affected (0.59 sec)
2. เพิ่มข้อมูลทดสอบ
mysql> INSERT INTO DemoTable VALUES('7:30:45');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('8:00:30');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('7:55:00');
Query OK, 1 row affected (0.10 sec)
3. ข้อมูลก่อนอัปเดต
mysql> SELECT * FROM DemoTable; +---------------+ | BreakfastTime | +---------------+ | 07:30:45 | | 08:00:30 | | 07:55:00 | +---------------+
4. Batch Update: เพิ่มเวลา 2 ชั่วโมง ทุกแถว
mysql> UPDATE DemoTable
SET BreakfastTime = ADDTIME(BreakfastTime, '2:00:00');
Query OK, 3 rows affected (0.13 sec)
Rows matched: 3 Changed: 3 Warnings: 0
5. ผลลัพธ์หลังอัปเดต
mysql> SELECT * FROM DemoTable; +---------------+ | BreakfastTime | +---------------+ | 09:30:45 | | 10:00:30 | | 09:55:00 | +---------------+
ฟังก์ชัน ADDTIME() และ SUBTIME()
| ฟังก์ชัน | คำอธิบาย | ตัวอย่าง |
|---|---|---|
ADDTIME(time, expr) | บวกเวลา expr เข้าไปใน time | ADDTIME('07:30:00', '2:00:00') = '09:30:00' |
SUBTIME(time, expr) | ลบเวลา expr ออกจาก time | SUBTIME('09:30:00', '2:00:00') = '07:30:00' |
ข้อควรระวัง
UPDATEโดยไม่มีWHEREจะอัปเดต ทุกแถว ในตาราง- ควร Backup หรือ
SELECTตรวจสอบก่อนรัน UPDATE จริง - ใช้
WHEREจำกัดขอบเขตหากต้องการอัปเดตเฉพาะบางกลุ่ม
สรุป
Batch Update ใน MySQL ทำได้โดย UPDATE table SET col = ADDTIME(col, '2:00:00') โดยไม่ต้องใช้ WHERE ฟังก์ชัน ADDTIME() จัดการการล้นเวลา (Overflow) อัตโนมัติ เช่น 23:00 + 2:00 = 25:00 (MySQL TIME รองรับค่ามากกว่า 24 ชั่วโมง)