บทความนี้สาธิตการสร้างตารางที่มีคอลัมน์คำนวณ (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