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

คำนวณเวลาจากวินาทีใน MySQL ด้วย TIME_TO_SEC และ SEC_TO_TIME

เพื่อรวมเวลา (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)

คำอธิบายขั้นตอน:

  1. TIME_TO_SEC(Logouttime) แปลงแต่ละเวลาเป็นวินาที (21000, 22210, 28850)
  2. SUM(...) บวกวินาทีทั้งหมด = 72060 วินาที
  3. SEC_TO_TIME(72060) แปลงกลับเป็น 20:01:00 (20 ชั่วโมง 1 นาที 0 วินาที)

หมายเหตุ: SEC_TO_TIME() รองรับค่าสูงสุดถึง 838:59:59 (ประมาณ 34 วัน) หากเกินกว่านั้นจะคืนค่า NULL