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

MySQL Batch Update เพิ่มเวลา 2 ชั่วโมงให้ทุกแถวด้วย ADDTIME()

ใช้คำสั่ง 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 เข้าไปใน timeADDTIME('07:30:00', '2:00:00') = '09:30:00'
SUBTIME(time, expr)ลบเวลา expr ออกจาก timeSUBTIME('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 ชั่วโมง)