Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > ผมเก็บเวลา เป็นทศนิยม ถ้านำไปบวกกันแล้วแปลงให้เป็นชั่วโมง ต้องเขียนฟังก์ชันอย่างไรครับ



 

ผมเก็บเวลา เป็นทศนิยม ถ้านำไปบวกกันแล้วแปลงให้เป็นชั่วโมง ต้องเขียนฟังก์ชันอย่างไรครับ

 



Topic : 112047



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์




เช่น

1 ชั่วโมง 30 นาที เก็บเป็น 1.3
5 นาที เก็บเป็น 0.05
40 นาที เก็บเป็น 0.4

แล้วถ้านำมารวมกันจะต้องใช้ฟังก์ชันอะไร ให้มันปัดเศษชั่วโมงเมื่อครบ 60 นาที

แล้วแปลงเป็น ชั่วโมง หรือ นาที



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-10-19 23:23:21 By : zoberranger View : 7981 Reply : 6
 

 

No. 1



โพสกระทู้ ( 9,542 )
บทความ ( 2 )



สถานะออฟไลน์


ผมว่าจัดเก็บใหม่ให้มันถูกรูปแบบดีกว่านะครับ

แต่เมื่อมันแบบนี้ เปลี่ยนรูปแบบ ให้เป็น time จริงๆ ก่อน
select cast( REPLACE( '1.20', '.', ':') as time)

เมื่อได้ time แล้ว จะเอาไปทำอะไรกับ time ต่อ ก็ดู ฟังชั่นเกี่ยวกับ time เลยนะครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-20 08:13:26 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับ

แล้วถ้าจะ sum ข้อมูลเวลาที่ได้มาต้อง ทำยังไงครับ
พอดีมันได้เวลามาแล้ว แต่พอจะ sum แล้ว error

Code (SQL)
SELECT gensumtime, CAST(REPLACE(gensumtime, '.', ':') AS time)
FROM `gen` 
WHERE gendate LIKE '%%/%%/2014'


time cast


ประวัติการแก้ไข
2014-10-21 02:18:37
2014-10-21 02:20:58
2014-10-21 02:22:47
2014-10-21 02:27:33
2014-10-21 02:31:04
2014-10-21 02:33:57
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-21 02:06:16 By : zoberranger
 

 

No. 3



โพสกระทู้ ( 9,542 )
บทความ ( 2 )



สถานะออฟไลน์


เนื่องจาก ข้อมูลรูปแบบไม่เป็นมาตรฐานเดียวกัน ซึ่งถ้าเป็น 0.00 คงใช้สูตร เมื่อกี้ได้

แต่เมื่อมันเป็นแบบนี้แล้ว จะรวมเวลาก็คงต้องใช้ สูตรนี้
1 แยกเวลา ชั่วโมงกับนาทีออกจากกัน เพราะ ที่เก็บ เป็นเลขฐาน 10 แต่ ชั่วโมงนาที เป็นเลขฐาน 60
2 รวมชั่วโมง รวมนาที
3 หาผลรวมที่แท้จริง ชั่วโมง + ( นาที / 60) , เศษของ นาที ที่เหลือ
Code (SQL)
select 
     (all_hour + cast((all_min / 60) as unsigned)) as ttl_hour,  # ผลรวมชั่วโมงที่แท้จริง 
     (all_min % 60) as ttl_min # เศษของ นาที ที่เหลือ
from
(
     select 
     sum( cast( gensumtime as unsigned) ) as all_hour,  #ทำในวงเล็บเป็น integer แล้วรวม ด้วย sum 
     sum( cast( (gensumtime * 100) as unsigned ) % 100) as all_min # หาเศษของ 100 ของในวงเล็บ x 100 แล้วรวมด้วย sum
     from `gen
) as tmp

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-21 07:55:50 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 84 )
บทความ ( 0 )



สถานะออฟไลน์


ผมทำอย่างคุณ Chaidhanan ไม่ได้ เลยลองทำเองเลยออกมาเป็นแบบนี้ครับ
เพิ่มทศนิยมให้เป็น 2 ตำแหน่ง แล้วเอาหน้าจุดไปคูณ 60 ได้เป็นชั่วโมง
ส่วนหลังจุด แล้วเอาไปบวกกับหลังจุดทศนิยมที่เป็นนาที
ได้เหมือนกัน

Code (SQL)
      $sqltxt="SELECT *, ROUND(  `gensumtime`, 2) AS gensumtime2  FROM `gen` 
      WHERE $genSql gendate LIKE '%%/%%/$year' 
      ORDER BY idgen DESC";
      $result = mysql_query($sqltxt);
     
      while ($rs = mysql_fetch_array ($result)) 
      { 
                $gensumtime2=$rs['gensumtime2']."<br>";
                $hour=substr($gensumtime2, 0, 1)."<br>";  
                $hour=($hour*60)."<br>";
                $min=substr($gensumtime2, 2, 2)."<br>"; 
                echo (int)$gensumtime3=$hour+$min."<br>";          
              ?>
     
       
      <?
      }echo "<br>Total Time : ".$gensumtimeTotal;
      ?>


Database มันอาจแปลกๆ ไปหน่อยครับ เพราะเค้าทำมา 5-6 ปีแล้วครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-22 00:04:48 By : zoberranger
 


 

No. 5



โพสกระทู้ ( 9,542 )
บทความ ( 2 )



สถานะออฟไลน์


ทำอย่างไรก็ได้ครับ ให้ result มันออกมาตรงตามความต้องการ ก่อน

แล้วค่อยลองศึกษาอย่างอื่นดู อย่างน้อยก็ได้หลักการคำนวณแล้ว
แต่จะใช้วิธีไหน ก็ต้องลองครับ

สำหรับอันนี้เป็น ตัวอย่างการ run code นะครับ
sum float as time
Code (SQL)
select 
     (all_hour + cast((all_min / 60) as unsigned)) as ttl_hour, 
     (all_min % 60) as ttl_min 
from
(
     select 
     sum( cast( gensumtime as unsigned) ) as all_hour, 
     sum( cast( (gensumtime * 100) as unsigned ) % 100) as all_min
     from gen
) as tmp

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-22 08:26:25 By : Chaidhanan
 


 

No. 6



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ผมตามอ่านจะตอบตั้งแต่ถามครั้งแรกล่ะ....
เวลาสัดส่วนมันอยู่ที่ 60
แต่ทศนิยมสัดส่วนมันอยู่ที่ 100

มันมีความต่าง การจะปรับเวลาให้เป็นทศนิยม ไม่แนะนำครับ

การบวก ลบ หาผลต่าง ของเวลามีฟังก์ชั่นอยู่ครับ

มันจะช่วยตอบโจทย์ และประหยัดเวลา

ไม่ต้องมาเสียเวลาแปลงด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-22 16:08:42 By : apisitp
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ผมเก็บเวลา เป็นทศนิยม ถ้านำไปบวกกันแล้วแปลงให้เป็นชั่วโมง ต้องเขียนฟังก์ชันอย่างไรครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่