เพื่อรวมเวลา (TIME) หลายแถวเข้าด้วยกันใน MySQL ต้องแปลงเป็นวินาทีก่อนด้วย TIME_TO_SEC() บวกกันด้วย SUM() แล้วค่อยแปลงกลับเป็น TIME ด้วย SEC_TO_TIME()
ตัวอย่างการสร้างตาราง
mysql> create table DemoTable (
Logouttime time );
Query OK, 0 rows affected (0.62 sec)
เพิ่มข้อมูลเวลา
mysql> insert into DemoTable values('5:50:00');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('6:10:10');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('8:00:50');
Query OK, 1 row affected (0.14 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
+------------+ | Logouttime | +------------+ | 05:50:00 | | 06:10:10 | | 08:00:50 | +------------+ 3 rows in set (0.00 sec)
คำสั่งรวมเวลาทั้งหมด
mysql> select sec_to_time(sum(time_to_sec(Logouttime))) from DemoTable;
ผลลัพธ์
+-------------------------------------------+ | sec_to_time(sum(time_to_sec(Logouttime))) | +-------------------------------------------+ | 20:01:00 | +-------------------------------------------+ 1 row in set (0.80 sec)
คำอธิบายขั้นตอน:
TIME_TO_SEC(Logouttime)แปลงแต่ละเวลาเป็นวินาที (21000, 22210, 28850)SUM(...)บวกวินาทีทั้งหมด = 72060 วินาทีSEC_TO_TIME(72060)แปลงกลับเป็น 20:01:00 (20 ชั่วโมง 1 นาที 0 วินาที)
หมายเหตุ: SEC_TO_TIME() รองรับค่าสูงสุดถึง 838:59:59 (ประมาณ 34 วัน) หากเกินกว่านั้นจะคืนค่า NULL