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

MySQL แปลงเอาต์พุต timediff เป็นรูปแบบวัน, ชั่วโมง, นาที, วินาที?


เพื่อให้เข้าใจ MySQL แปลงเอาต์พุต timediff เป็นรูปแบบวัน ชั่วโมง นาที และวินาที คุณต้องใช้ CONCAT() จาก MySQL

ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:

mysql> สร้างตาราง convertTimeDifferenceDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> วันที่และเวลาเริ่มต้น, -> วันที่สิ้นสุดวันที่, -> PRIMARY KEY(Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.68 วินาที) 

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามที่จะแทรกบันทึกมีดังนี้:

mysql> แทรกลงในค่า convertTimeDifferenceDemo(StartDate,EndDate) (date_add(now(),interval -3 hour),date_add(now(),interval 3 hour));Query OK, 1 แถวได้รับผลกระทบ (0.41 วินาที)mysql> แทรกลงในค่า convertTimeDifferenceDemo (StartDate, EndDate) (date_add (ตอนนี้ (), ช่วงเวลา -2 ชั่วโมง), date_add (ตอนนี้ () ช่วงเวลา 2 ชั่วโมง)); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.27 วินาที) mysql> แทรกลงใน convertTimeDifferenceDemo (StartDate,EndDate) ค่า ('2018-04-05 12:30:35','2018-05-17 14:30:50');Query OK, 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงใน convertTimeDifferenceDemo( StartDate,EndDate) ค่า ('2017-10-11 11:20:30','2017-12-17 15:21:55');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.20 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:

mysql> เลือก *จาก convertTimeDifferenceDemo;

ต่อไปนี้เป็นผลลัพธ์:

<ก่อนหน้า>+----+---------------------------+------------------- ---+| รหัส | StartDate | EndDate |+----+---------------------+-------------------- -+| 1 | 2019-01-28 20:55:33 | 2019-01-29 02:55:33 || 2 | 2019-01-28 21:57:42 | 2019-01-29 01:57:42 || 3 | 2018-04-05 12:30:35 | 2018-05-17 14:30:50 || 4 | 2017-10-11 11:20:30 | 2017-12-17 15:21:55 |+-----------+---------------------+----------- ----------+4 แถวในชุด (0.00 วินาที)

นี่คือการสืบค้นเพื่อให้ได้ผลลัพธ์ timediff ในรูปแบบวัน ชั่วโมง นาที และวินาที:

mysql> เลือก CONCAT( -> FLOOR(HOUR(TIMEDIFF(StartDate,EndDate))) / 24), ' DAYS ', -> MOD(HOUR(TIMEDIFF(StartDate,EndDate))), 24), ' HOURS ', -> MINUTE(TIMEDIFF(StartDate,EndDate)), ' MINUTES ') ตามคำอธิบาย -> จาก convertTimeDifferenceDemo;

ต่อไปนี้เป็นผลลัพธ์:

<ก่อนหน้า>+------------------------------+| คำอธิบาย |+------------------------------+| 0 วัน 6 ชั่วโมง 0 นาที || 0 วัน 4 ชั่วโมง 0 นาที || 34 วัน 22 ชั่วโมง 59 นาที || 34 วัน 22 ชั่วโมง 59 นาที |+------------------------------------+4 แถวในชุด 6 คำเตือน (0.04 วินาที)