กระทู้เก่าบอร์ด อ.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 ตามตัวอย่างครับ
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 นาที
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
30/10/2555 00:00:00 แต่ Format มันเป็นเพียง 30/10/2555
7 @R14282
ข้อมูลที่ใช้้อยู่แยกเป็น 2 Field Starting time กับ Ending Time
เพราะวันที่มี Field แยกต่างหาก
ไม่อยากคีย์วันที่หลาย Field น่ะครับ
ช่วยหน่อยครับ
เพราะวันที่มี Field แยกต่างหาก
ไม่อยากคีย์วันที่หลาย Field น่ะครับ
ช่วยหน่อยครับ
8 @R14292
ช่วยตอบหน่อยครับ ขอความรู้ด้วยครับ
9 @R14294
คงต้องแก้ปัญหาการออกแบบฐานข้อมูลก่อนครับ
ถ้าไม่แก้ก็เป็นการปะผุ ต้องเขียน code กันยาวเพื่อคำนวณหรือตรวจสอบ
เช่นข้อมูลที่ให้มา เวลาเก็บค่า 9.30 - เป็นข้อมูลแบบทศนิยม(ฐานสิบ) ไม่สามารถนำมาคำนวณแบบเวลา(ฐานสิบสอง, ฐานหกสิบ) ได้ตรงๆ ต้องแปลงฐานก่อน ...
สำหรับมือใหม่ต้องทำความเข้าใจก่อนว่า การเก็บข้อมูลกับการบันทึกข้อมูลเป็นคนละส่วน จุดประสงค์ต่างกัน
ถ้าไม่แก้ก็เป็นการปะผุ ต้องเขียน code กันยาวเพื่อคำนวณหรือตรวจสอบ
เช่นข้อมูลที่ให้มา เวลาเก็บค่า 9.30 - เป็นข้อมูลแบบทศนิยม(ฐานสิบ) ไม่สามารถนำมาคำนวณแบบเวลา(ฐานสิบสอง, ฐานหกสิบ) ได้ตรงๆ ต้องแปลงฐานก่อน ...
สำหรับมือใหม่ต้องทำความเข้าใจก่อนว่า การเก็บข้อมูลกับการบันทึกข้อมูลเป็นคนละส่วน จุดประสงค์ต่างกัน
10 @R14311
ชิดข้อมูลเป็น Date/Time อยู่แล้วน่ะครับ
ชิดข้อมูลเป็น 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
ประมาณนี้ครับ เป็นหลักการณ์นะครับ ปรับใช้กับฐานข้อมูลดูครับ
เป็นสูตรของการหาค่านาทีในวันเดียวกันครับ แต่ข้อมูลคุณกลับมีการนำ 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
และเท่าที่ไล่อ่านมาแต่ต้น เข้าใจว่า คุณแยกฟิลด์ "วัน" ออกจากฟิลด์ "เวลา"
ซึ่งพอเอามาคำนวน มันจะมีปัญหาตอน "ข้ามวัน"
เพื่อแก้ปัญหาดังกล่าว (ไม่ให้มีปัญหาคำนวนเมื่อข้ามวัน) เราจึงต้องเตรียมข้อมูลก่อนคำนวน นั่นคือเอา "วัน" และ "เวลา" มารวมกันก่อน แล้วค่อยคำนวน
สร้างตัวตั้ง สมมติว่า A (เอาฟิลด์วันสิ้นสุด มารวมกับฟิลด์ เวลาสิ้นสุด)
สร้างตัวลบ สมมติว่า B (เอาฟิลด์วันเริ่มต้น มารวมกับฟิลด์ เวลาเริ่มต้น)
เสร็จแล้วเอา A - B โดยกำหนดหน่วยผลลัพธ์เป็น นาที (คือหาผลต่าง เป็นนาที)
เอา นาที ที่ได้ มาคำนวนเป็น "คำตอบสุดท้าย"
ถ้าให้ไล่บรรทัด
เพื่อจะสร้าง A ก็ต้อง
EndDate + EndTime
เพื่อจะสร้าง B ก็คล้ายกัน
StartDate + StartTime
ทีนี้เอาทั้งสองค่า มาหาผลต่างของนาที
DateDiff("m", A, B)
แล้วเอา ค่าที่ได้มาหาร 60 จะได้คำตอบสวยๆ
คำตอบ : Datediff("m",(EndDate + EndTime), (StartDate + StartTime)) / 60
14 @R14351
ขอบคุณมากๆเลยครับ
ทำได้แล้วครับ
ทำได้แล้วครับ
Time: 0.3360s