คำนวณระยะเวลา
กระทู้เก่าบอร์ด อ.Yeadram

 2,922   14
URL.หัวข้อ / URL
คำนวณระยะเวลา

Starting Time      Ending Time      Operation Time(Min)
    08.00                   09.30                      90
    08.30                   09.00                      30

จะทำยังไงให้ได้คำตอบ Operation Time ตามตัวอย่างครับ   

14 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R14268
Operation Time(Min) : (([Ending Time]-[Starting Time])*24)*60
2 @R14271

Starting Time      Ending Time      Operation Time(Min)
      23.00                    0.00                      -1380

ลองแล้วครับถ้าเป็นเวลาดังกล่าวคำตอบจะไม่ถูกครับ
ซึ่งมันควรจะเป็น 60 นาที
3 @R14274
4 @R14275
ขอโทษครับ รูปผิดครับ
5 @R14276
6 @R14277
วันที่ a คือ 29/10/2555 23:00:00   ส่วนวันที่ B ณ.เวลา เที่ยงคืน คือ
30/10/2555 00:00:00 แต่ Format มันเป็นเพียง 30/10/2555
7 @R14282
ข้อมูลที่ใช้้อยู่แยกเป็น 2 Field Starting time กับ Ending Time
เพราะวันที่มี Field แยกต่างหาก
ไม่อยากคีย์วันที่หลาย Field น่ะครับ
ช่วยหน่อยครับ
8 @R14292
ช่วยตอบหน่อยครับ ขอความรู้ด้วยครับ
9 @R14294
คงต้องแก้ปัญหาการออกแบบฐานข้อมูลก่อนครับ
ถ้าไม่แก้ก็เป็นการปะผุ ต้องเขียน code กันยาวเพื่อคำนวณหรือตรวจสอบ
เช่นข้อมูลที่ให้มา เวลาเก็บค่า 9.30 - เป็นข้อมูลแบบทศนิยม(ฐานสิบ) ไม่สามารถนำมาคำนวณแบบเวลา(ฐานสิบสอง, ฐานหกสิบ) ได้ตรงๆ ต้องแปลงฐานก่อน ...
สำหรับมือใหม่ต้องทำความเข้าใจก่อนว่า การเก็บข้อมูลกับการบันทึกข้อมูลเป็นคนละส่วน จุดประสงค์ต่างกัน
10 @R14311


ชิดข้อมูลเป็น Date/Time อยู่แล้วน่ะครับ
11 @R14313
เท่าที่อ่านดู (([Ending Time]-[Starting Time])*24)*60
เป็นสูตรของการหาค่านาทีในวันเดียวกันครับ แต่ข้อมูลคุณกลับมีการนำ 0:00:00 มาคิด นั่นหมายถึงวันใหม่ของอีกวัน (วันเดียวกันค่าสูงสุดอยู่ที่ 23:59:59) ซึ่งมันก็เป็นค่าผิดพลาดแน่นอนครับ จากตัวอย่างเหมือนคุณจะใช้ค่าเวลามาคิดอย่างเดียว แต่เหตุการณ์ที่คำนวณแล้วเป็น -1380 แสดงว่าคุณต้องใช้วันที่มาคิดด้วยครับ โดยอาจใช้เป็น
((([End Date]+[Ending Time]) - ([Start Date] + [Starting Time]))*24)*60
ประมาณนี้ครับ เป็นหลักการณ์นะครับ ปรับใช้กับฐานข้อมูลดูครับ
12 @R14323
ช่วยเขียนเป็นสูตร นิพจน์ ได้ไหมครับ มือใหม่น่ะครับ
13 @R14335
ตามคุณ TTT บอกนะครับ

และเท่าที่ไล่อ่านมาแต่ต้น เข้าใจว่า คุณแยกฟิลด์ "วัน" ออกจากฟิลด์ "เวลา"
ซึ่งพอเอามาคำนวน มันจะมีปัญหาตอน "ข้ามวัน"

เพื่อแก้ปัญหาดังกล่าว (ไม่ให้มีปัญหาคำนวนเมื่อข้ามวัน) เราจึงต้องเตรียมข้อมูลก่อนคำนวน นั่นคือเอา "วัน" และ "เวลา" มารวมกันก่อน แล้วค่อยคำนวน

สร้างตัวตั้ง สมมติว่า A (เอาฟิลด์วันสิ้นสุด มารวมกับฟิลด์ เวลาสิ้นสุด)

สร้างตัวลบ สมมติว่า B (เอาฟิลด์วันเริ่มต้น มารวมกับฟิลด์ เวลาเริ่มต้น)

เสร็จแล้วเอา A - B โดยกำหนดหน่วยผลลัพธ์เป็น นาที (คือหาผลต่าง เป็นนาที)

เอา นาที ที่ได้ มาคำนวนเป็น "คำตอบสุดท้าย"



ถ้าให้ไล่บรรทัด
เพื่อจะสร้าง A ก็ต้อง
EndDate + EndTime

เพื่อจะสร้าง B ก็คล้ายกัน
StartDate + StartTime

ทีนี้เอาทั้งสองค่า มาหาผลต่างของนาที

DateDiff("m", A, B)
แล้วเอา ค่าที่ได้มาหาร 60 จะได้คำตอบสวยๆ


คำตอบ : Datediff("m",(EndDate + EndTime), (StartDate + StartTime)) / 60
14 @R14351
ขอบคุณมากๆเลยครับ
ทำได้แล้วครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3360s