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

ใช้ TIMESTAMPDIFF คำนวณความแตกต่างเวลาใน MySQL

บทความนี้สาธิตการสร้างตารางที่มีคอลัมน์คำนวณ (Generated Column) โดยใช้ TIMESTAMPDIFF() คำนวณความแตกต่างระหว่างเวลาเข้างานและเลิกงานเป็นวินาที

สร้างตารางพร้อม Generated Column

mysql> CREATE TABLE DemoTable665(
    PunchInTime DATETIME,
    PunchOutTime DATETIME,
    Details INT(11) AS (ABS(TIMESTAMPDIFF(SECOND, PunchInTime, PunchOutTime)))
) ENGINE=MyISAM;
Query OK, 0 rows affected (0.23 sec)

เพิ่มข้อมูลทดสอบ

mysql> INSERT INTO DemoTable665(PunchInTime, PunchOutTime) 
VALUES('2019-09-21 9:30:10', '2019-09-21 04:34:56');
mysql> INSERT INTO DemoTable665(PunchInTime, PunchOutTime) 
VALUES('2019-11-11 10:00:20', '2019-11-11 05:30:16');

ผลลัพธ์ (Details คำนวณอัตโนมัติ)

+---------------------+---------------------+---------+
| PunchInTime         | PunchOutTime        | Details |
+---------------------+---------------------+---------+
| 2019-09-21 09:30:10 | 2019-09-21 04:34:56 |   17714 |
| 2019-11-11 10:00:20 | 2019-11-11 05:30:16 |   16204 |
+---------------------+---------------------+---------+

คำอธิบาย:

  • TIMESTAMPDIFF(SECOND, start, end) - คำนวณความแตกต่างเป็นวินาที
  • ABS() - ค่าสัมบูรณ์ (ป้องกันค่าลบถ้าเวลาสลับกัน)
  • AS (expression) - กำหนด Generated Column (MySQL 5.7+)
  • ENGINE=MyISAM - ต้องใช้ MyISAM สำหรับ Generated Column ในบางเวอร์ชัน

หน่วยเวลาที่รองรับ: MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR