MySQL : How to Calculate Elapse Time or different Time

ในการคำนวนหาค่า”ส่วนต่างของเวลา” (Elapsed Time) ระหว่างค่าเวลา 2 ค่า ในฐานข้อมูล MySQL จะมีฟังก์ชันที่เกี่ยวข้อง 2 ฟังก์ชันคือ

unix_timestamp(date) ฟังก์ชันที่แปลงค่าเวลา hr:mi:ss ให้กลายเป็นตัวเลขของ timestamp
sec_to_time(second time) ฟังก์ชันที่แปลงเลขจาก “วินาที”(second) ให้เป็นเวลา hr:mi:ss

สำหรับตัวอย่าง มีตารางเก็บบันทึกเวลาเริ่มต้น start_date กับเวลาสิ้นสุด end_date ต้องการหาส่วนต่างของเวลา

start_date end_date
2013-11-16 15:29:52 2013-11-16 15:49:12
2014-01-14 03:54:25 2014-01-14 03:54:53
2014-01-15 13:26:22 2014-01-15 14:16:02
2014-01-17 03:44:20 2014-01-17 05:04:10
2014-01-17 23:54:21 2014-01-18 00:24:21

จากตัวอย่างเราสามารถใช้ SQL ดังนี้

SELECT
start_date,
end_date,
unix_timestamp(start_date) s_timestamp,
unix_timestamp(end_date) e_timestamp,
(unix_timestamp(end_date)-unix_timestamp(start_date)) diff,
sec_to_time(unix_timestamp(end_date)-unix_timestamp(start_date)) elapse_time
FROM `logtab` order by start_date;

ซึ่งได้ผลลัพธ์แบบนี้ครับ

start_date end_date s_timestamp e_timestamp diff elapse_time
2013-11-16 15:29:52 2013-11-16 15:49:12 1384590592 1384591752 1160 00:19:20
2014-01-14 03:54:25 2014-01-14 03:54:53 1389646465 1389646493 28 00:00:28
2014-01-15 13:26:22 2014-01-15 14:16:02 1389767182 1389770162 2980 00:49:40
2014-01-17 03:44:20 2014-01-17 05:04:10 1389905060 1389909850 4790 01:19:50
2014-01-17 23:54:21 2014-01-18 00:24:21 1389977661 1389979461 1800 00:30:00

ในตัวอย่างแสดงผลการแปลงเวลาให้เป็น unix timestamp จากนั้นหาส่วนต่าง (diff) ซึ่งมีหน่วยเป็นวินาที จากนั้นค่อยใช้ฟังก์ชัน sec_to_time แปลงให้อยู่ในรูปของเวลาที่ดูง่ายขึ้น

You may also like...

Leave a Reply

Your email address will not be published.