วิธีใช้ DATEDIFF ใน mysql เพื่อคำนวณหาระยะห่างเป็นวัน ชั่วโมง นาที

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา วิธีใช้ DATEDIFF ใน mysql เพื่อคำนวณหาระยะห่างเป็นวัน ชั่วโมง นาที

วิธีใช้ DATEDIFF ใน mysql เพื่อคำนวณหาระยะห่างเป็นวัน ชั่วโมง นาที
ขอสอบถามคะอยากทราบว่าถ้าต้องคำนวณระยะห่างวันที่/เวลา แสดงผลเป็น กี่วัน กี่ชั่วโมง กี่นาที ในคำสั่ง DATEDIFF mysql  ต้องใช้โค้ดแบบไหนคะ

Depart_dt                       DATE NOW
2021-11-01 15:25:08     2021-11-03 14:35:25
ผลลัพธ์
Day   Hour  Minute 
1         23        10

ซึ่งใช้แบบนี้มันไม่ได้คะ

SELECT DATEDIFF(second,Depart_dt,NOW())/(60*60*24) AS Day
     ,DATEDIFF(second,Depart_dt,NOW())/(60*60)%24 AS Hour
     ,DATEDIFF(second,Depart_dt,NOW())/(60)%60 AS Minute
     ,DATEDIFF(second,Depart_dt,NOW())%60 AS Second
FROM Table1
      


Gg1635929692 04-11-2021 09:09:34

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
SELECT 
CAST(FLOOR(TIME_FORMAT(TIMEDIFF(NOW(),date1),'%H')/24) as INT) as day,
CAST(MOD(TIME_FORMAT(TIMEDIFF(NOW(),date1),'%H'),24) as INT) as hour,
CAST(TIME_FORMAT(TIMEDIFF(NOW(),date1),'%i') as INT) as minute,
CAST(TIME_FORMAT(TIMEDIFF(NOW(),date1),'%s') as INT) as second
FROM tb
 
ใช้ TIMEDIFF(วันเวลาที่มากกว่า, วันเวลาที่น้อยกว่า) จะได้ ชั่วโมง : นาที : วินาที ที่ต่างกัน
 
เช่น 526:01:30 คือห่างกัน 526 ชั่วโมง 1 นาที และ 30 วินาที
 
อยากได้เฉพาะค่า ให้ใช้ TIME_FORMAT() แยกเอาเฉพาะค่าที่ต้องการ เช่น
 
TIME_FORMAT(TIMEDIFF(NOW(),date1),'%i') เอาเฉพาะนาที ได้ 01
TIME_FORMAT(TIMEDIFF(NOW(),date1),'%s') เอาเฉพาะวินาที ได้ 30
 
อยากได้เป็นตัวเลข ไม่มี 0 ด้านหน้าใช้คำสั่ง CAST แปลงเป็น ชนิดที่ต้องการ เช่น
 
CAST(TIME_FORMAT(TIMEDIFF(NOW(),date1),'%i') as INT) จะได้ 1 นาที
 
ส่วนชั่วโมง กับวันต้องคำนวณจากชั่วโมงที่ให้มา แสดงว่าเราต้องแยกเอาเฉพาะชั่วโมงมา แล้วใช้สูตร
 
สมมติมี 26 ชั่วโมง แสดงว่า มี 1 วัน กับอีก 2 ชั่วโมง
FLOOR(26/24) = 1
MOD(26,24) = 2
 
แนวทางประมาณนี้ ถ้าค่าเป็น ลบ แสดงว่า สลับตำแหน่งวันที่ หรือวันที่น้อยกว่าลบวันที่มากกว่า ได้
จำนวนที่ต่างเท่ากัน เพียงแค่เป็นค่าติดลบ


ninenik 04-11-2021
 ความคิดเห็นที่ 2
ได้แล้วคะ ขอบคุณมาก ๆ นะคะ heart


gg1635929692 04-11-2021 13:42






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ