เพื่อคำนวณผลรวมของเวลา (time) ใน MySQL ให้แปลงเวลาเป็นวินาทีด้วย TIME_TO_SEC() บวกกัน แล้วแปลงกลับด้วย SEC_TO_TIME()
รูปแบบคำสั่ง
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(timeColumn))) AS TotalTime FROM yourTableName;
ตัวอย่างเต็ม
1. สร้างตาราง
mysql> create table AddTotalTimeDemo (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> LoginTime time
-> );
2. เพิ่มข้อมูล
mysql> insert into AddTotalTimeDemo(LoginTime) values('05:05:00');
mysql> insert into AddTotalTimeDemo(LoginTime) values('07:20:00');
mysql> insert into AddTotalTimeDemo(LoginTime) values('02:05:00');
mysql> insert into AddTotalTimeDemo(LoginTime) values('03:03:00');
mysql> insert into AddTotalTimeDemo(LoginTime) values('05:07:00');
3. คำนวณผลรวม
mysql> SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(LoginTime))) AS TotalTime from AddTotalTimeDemo;
+-----------+ | TotalTime | +-----------+ | 22:40:00 | +-----------+
การทำงานเบื้องหลัง
TIME_TO_SEC('05:05:00')→ 18300 วินาที- บวกทุกแถว: 18300 + 26400 + 7500 + 11100 + 18420 = 81720 วินาที
SEC_TO_TIME(81720)→ '22:40:00'
ข้อจำกัด
- ชนิดข้อมูล
TIMEรองรับได้สูงสุด '838:59:59' - หากผลรวมเกิน จะต้องใช้การคำนวณแบบอื่น (เช่น แยกวัน ชั่วโมง นาที วินาที)