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

แปลง TIMEDIFF ใน MySQL ให้เป็นรูปแบบ วัน ชั่วโมง นาที วินาที


ใช้ฟังก์ชัน CONCAT() ร่วมกับฟังก์ชันวันที่/เวลา เพื่อแปลงผลลัพธ์ TIMEDIFF ให้อ่านง่าย

ตัวอย่างการใช้งาน

สร้างตารางเก็บวันที่เริ่มต้นและสิ้นสุด:

mysql> CREATE TABLE convertTimeDifferenceDemo ( Id INT NOT NULL AUTO_INCREMENT, StartDate DATETIME, EndDate DATETIME, PRIMARY KEY(Id) ); Query OK, 0 rows affected (0.68 sec)

เพิ่มข้อมูล:

mysql> INSERT INTO convertTimeDifferenceDemo(StartDate,EndDate) VALUES(DATE_ADD(NOW(), INTERVAL -3 HOUR), DATE_ADD(NOW(), INTERVAL 3 HOUR));
mysql> INSERT INTO convertTimeDifferenceDemo(StartDate,EndDate) VALUES(DATE_ADD(NOW(), INTERVAL -2 HOUR), DATE_ADD(NOW(), INTERVAL 2 HOUR));
mysql> INSERT INTO convertTimeDifferenceDemo(StartDate,EndDate) VALUES('2018-04-05 12:30:35', '2018-05-17 14:30:50');
mysql> INSERT INTO convertTimeDifferenceDemo(StartDate,EndDate) VALUES('2017-10-11 11:20:30', '2017-12-17 15:21:55');

คำสั่งแปลงเป็น วัน ชั่วโมง นาที:

mysql> SELECT CONCAT( 
  FLOOR(HOUR(TIMEDIFF(StartDate,EndDate)) / 24), ' DAYS ', 
  MOD(HOUR(TIMEDIFF(StartDate,EndDate)), 24), ' HOURS ', 
  MINUTE(TIMEDIFF(StartDate,EndDate)), ' MINUTES ' 
) AS DESCRIPTION 
FROM convertTimeDifferenceDemo;

ผลลัพธ์:

+------------------------------+ | DESCRIPTION                | +------------------------------+ | 0 DAYS 6 HOURS 0 MINUTES     | | 0 DAYS 4 HOURS 0 MINUTES     | | 34 DAYS 22 HOURS 59 MINUTES  | | 34 DAYS 22 HOURS 59 MINUTES  | +------------------------------+ 4 rows in set, 6 warnings (0.04 sec)

หมายเหตุ: คำเตือน (warnings) เกิดจากการใช้ TIMEDIFF ที่อาจคืนค่าลบ หากต้องการค่าบวกเสมอ ให้ใช้ ABS(TIMEDIFF(...)) หรือสลับลำดับ StartDate/EndDate ให้ถูกต้อง