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

หาผลรวมเวลาใน MySQL โดยแปลงเป็นวินาทีก่อนด้วย TIME_TO_SEC()

บทนำ

การบวกเวลา (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:0015,000
05:20:5019,250
06:40:1024,010
รวม58,260

58,260 วินาที = 16 ชั่วโมง 11 นาที 00 วินาที

ข้อควรระวัง

  • SEC_TO_TIME() คืนค่าในช่วง -838:59:59 ถึง 838:59:59
  • หากผลรวมเกินขีดจำกัด จะได้ค่าผิดพลาด
  • สำหรับผลรวมมาก ให้คำนวณเป็นวินาที/นาที/ชั่วโมง แล้วจัดรูปแบบเอง