บทนำ
การบวกเวลา (Time) ใน MySQL ไม่สามารถใช้ SUM() โดยตรงได้ เพราะเวลาจะเกิน 24 ชั่วโมง วิธีแก้คือแปลงเป็นวินาที บวกกัน แล้วแปลงกลับเป็นเวลา
ฟังก์ชันที่ใช้
TIME_TO_SEC(time)- แปลงเวลาเป็นวินาทีSEC_TO_TIME(seconds)- แปลงวินาทีเป็นเวลา
ตัวอย่างการสร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
-> ArrivalTime TIME
-> );
Query OK, 0 rows affected (0.63 sec)
mysql> INSERT INTO DemoTable VALUES('04:10:00');
mysql> INSERT INTO DemoTable VALUES('05:20:50');
mysql> INSERT INTO DemoTable VALUES('06:40:10');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+-------------+
| ArrivalTime |
+-------------+
| 04:10:00 |
| 05:20:50 |
| 06:40:10 |
+-------------+
3 rows in set (0.00 sec)
คำสั่งหาผลรวมเวลา
mysql> SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(ArrivalTime))) FROM DemoTable;
ผลลัพธ์
+-------------------------------------------------+
| SEC_TO_TIME(SUM(TIME_TO_SEC(ArrivalTime))) |
+-------------------------------------------------+
| 16:11:00 |
+-------------------------------------------------+
1 row in set (0.00 sec)
การคำนวณแบบขั้นตอน
| เวลา | วินาที |
|---|---|
| 04:10:00 | 15,000 |
| 05:20:50 | 19,250 |
| 06:40:10 | 24,010 |
| รวม | 58,260 |
58,260 วินาที = 16 ชั่วโมง 11 นาที 00 วินาที
ข้อควรระวัง
- SEC_TO_TIME() คืนค่าในช่วง -838:59:59 ถึง 838:59:59
- หากผลรวมเกินขีดจำกัด จะได้ค่าผิดพลาด
- สำหรับผลรวมมาก ให้คำนวณเป็นวินาที/นาที/ชั่วโมง แล้วจัดรูปแบบเอง