|
หัวข้อ: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: phongdet ที่ 09 กันยายน 2013, 13:02:40 (http://image.ohozaa.com/i/0d0/yVYfh0.png)
ในคอลัม CTotal อ่ะครับ ผมกำหนดชนิดเป็นเป็น Double แต่พอหลังทศนิยม มันไม่เก็บเลข 0 เลย ผมต้องการให้มันเก็บแบบว่า 18.40 แต่มันไม่เก็บครับ เก็บเป็น 18.4 สมมุติถ้าเป็นหลักหน่วยก็ไม่เป็นไร เป็นค่าเวลาเช่น ว่า เวลารวมได้ 18.4 หลักหน่วยคือเลข 4 แต่ถ้าเวลารวมได้ 18.40 แล้วมันเก็บเป็น 18.4 คงจะทำให้ผิดพลาดเรื่องนาทีอ่ะครับ ขอบคุณครับ หัวข้อ: Re: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: max30012540 ที่ 09 กันยายน 2013, 13:06:27 เปลี่ยนเป็น varchar ครับ (ไม่ใช้การแก้ไขที่ดีที่สุด แต่ก็พอใช้ได้)
หัวข้อ: Re: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: xvlnw.com ที่ 09 กันยายน 2013, 13:08:34 ใช้ php ช่วยเอาได้ครับ
number_format(ตัวเลข,ทศนิยมกี่ตำแหน่ง); echo number_format(18.4,2); // 18.40 หัวข้อ: Re: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: @@@ ที่ 09 กันยายน 2013, 13:15:48 18.40 กับ 18.4 ไม่ได้มีค่าต่างกันเลยครับ
จะทำระบบไหนๆก็ไม่ทำให้ ผิดพลาด ครับ :wanwan015: :wanwan015: หัวข้อ: Re: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: dekmv ที่ 09 กันยายน 2013, 13:17:44 เปลี่ยนเป็น varchar ครับ (ไม่ใช้การแก้ไขที่ดีที่สุด แต่ก็พอใช้ได้) ตามท่านนี้เลยครับ (แต่เอามาไปคำนวณตรงๆไม่ได้ครับ ต้องใช้ php ช่วยครับ) หัวข้อ: Re: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: phongdet ที่ 09 กันยายน 2013, 13:23:13 18.40 กับ 18.4 ไม่ได้มีค่าต่างกันเลยครับ จะทำระบบไหนๆก็ไม่ทำให้ ผิดพลาด ครับ :wanwan015: :wanwan015: คือของผมเป็นแบบนี้ครับ แบบว่านี้คือเวลารวมฝึกงานของนักศึกษาอ่ะครับ คือคอลัมนี้ ต้องเก็บเป็นตัวเลขเพราะเป็นเวลารวม แต่ที่มันต่างคือว่า 18.40 ชั่วโมง ก็ในความคิดของผมคือ 18 ชั่วโมง 40 นาที แต่ 18.4 คือ 18 ชั่วโมง 4 นาทีอ่ะครับ อันนี้ความคิดผมนะครับ ไม่รู้จะถูกไหม คือมันเก็บชั่วโมงรวมทั้งหมดไว้ แบบว่า เวลาผมจะเก็บแถวใหม่ ผมก็จะเลือกมันขึ้นมาก่อนโดยใช้ คำสั่ง SUM(CTotal) แล้วก็เก็บมันลงในแถวที่เพิ่มขี้นมาใหม่ไปเรื่อยๆๆ ครับ หรือมีวิธีที่ดีกว่านี้ขอคำแนะนำด้วยครับผม หัวข้อ: Re: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: phongdet ที่ 09 กันยายน 2013, 13:24:19 เปลี่ยนเป็น varchar ครับ (ไม่ใช้การแก้ไขที่ดีที่สุด แต่ก็พอใช้ได้) จะลองทำดูครับขอบคุณครับ หัวข้อ: Re: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: spacebar ที่ 09 กันยายน 2013, 13:47:13 ใช้เป็น time format อาจจะเหมาะกว่า http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html
หัวข้อ: Re: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: iCeEffecT ที่ 10 กันยายน 2013, 18:51:33 ไม่แนะนำให้เปลี่ยนเป็น varchar ครับ เหตุผลเพราะถ้าเก็บเป็น double เรายังใช้ query คำนวณตัวเลขช่วยได้เช่น sum ค่า หรือ order by ต่างๆ แต่การเก็บเป็น varchar มันจะไม่ช่วยในด้านนี้ครับ ท่านจะ sum ค่าตามที่บอกไม่ได้เลย ถ้าข้อมูลตัวเลขก็ควรเก็บเป็นตัวเลขดีกว่า
วิธีแก้ไขกรณีนี้ข้อมูลการเก็บไม่ได้ผิดพลาด แต่อยู่ที่การแสดงผลมากกว่า ก็ควรแสดงผลเป็น number_format(ตัวเลข,ทศนิยมกี่ตำแหน่ง); ตามที่ rep บนแนะนำครับ ส่วนการบันทึกค่า 18.4 นั้นเป็นในหน่วยทศนิยมหลัก ถ้า 18 ชั่วโมง 4 นาทีน่าจะต้องใช้เลข 18.04 มากกว่านะครับ ถ้าคิดแบบเดิมโอกาสผิดพลาดสูงมากครับ ลองพิจารณาดูครับผม หัวข้อ: Re: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: Queue ที่ 10 กันยายน 2013, 20:14:17 18.40 กับ 18.4 ไม่ได้มีค่าต่างกันเลยครับ จะทำระบบไหนๆก็ไม่ทำให้ ผิดพลาด ครับ :wanwan015: :wanwan015: คือของผมเป็นแบบนี้ครับ แบบว่านี้คือเวลารวมฝึกงานของนักศึกษาอ่ะครับ คือคอลัมนี้ ต้องเก็บเป็นตัวเลขเพราะเป็นเวลารวม แต่ที่มันต่างคือว่า 18.40 ชั่วโมง ก็ในความคิดของผมคือ 18 ชั่วโมง 40 นาที แต่ 18.4 คือ 18 ชั่วโมง 4 นาทีอ่ะครับ อันนี้ความคิดผมนะครับ ไม่รู้จะถูกไหม คือมันเก็บชั่วโมงรวมทั้งหมดไว้ แบบว่า เวลาผมจะเก็บแถวใหม่ ผมก็จะเลือกมันขึ้นมาก่อนโดยใช้ คำสั่ง SUM(CTotal) แล้วก็เก็บมันลงในแถวที่เพิ่มขี้นมาใหม่ไปเรื่อยๆๆ ครับ หรือมีวิธีที่ดีกว่านี้ขอคำแนะนำด้วยครับผม ผมว่าคุณเข้าใจอะไรผิดเกี่ยวกับ database แล้วนะครับ database เอาไว้เก็บข้อมูลที่ถูกต้องครับ ถ้าจะเอามาแสดงหน้าเว็บหรือทำอะไร ก็ใช้ php จัดการ เก็บ 18.4 ถ้าเอามาแสดงหน้าเว็บอยากให้แสดง 18.40 ก็ใช้ php แสดงผลสิครับ หรือว่า user ของคุณเข้ามาดูได้ถึง database ถึงต้องการเห็นเลย 0 ตัวท้ายด้วย --------------------------------------- ถ้าข้อมูลคุณเป็นชั่วโมง คุณควรเก็บเป็น varchar ครับไม่ใช่ Double หัวข้อ: Re: รบกวนด้วยครับ MySql ไม่เก็บเลข 0 เริ่มหัวข้อโดย: tekub ที่ 10 กันยายน 2013, 20:59:38 มันผิดตั้งแต่ข้อมูลเวลา แต่ดันมาเก็บเป็น Double แล้วครับ
ถ้าเป็นแบบนี้แนะนำให้ใช้ number_format(ตัวเลข,ทศนิยมกี่ตำแหน่ง); จะดีกว่า ถ้าจะให้ถูกต้องเก็บเป็น time ครับ มันจะได้ง่ายตอนออก report นะออ |