ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingรบกวนด้วยครับ MySql ไม่เก็บเลข 0
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: รบกวนด้วยครับ MySql ไม่เก็บเลข 0  (อ่าน 1831 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
phongdet
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 97



ดูรายละเอียด
« เมื่อ: 09 กันยายน 2013, 13:02:40 »



ในคอลัม CTotal อ่ะครับ ผมกำหนดชนิดเป็นเป็น Double แต่พอหลังทศนิยม มันไม่เก็บเลข 0 เลย ผมต้องการให้มันเก็บแบบว่า 18.40 แต่มันไม่เก็บครับ เก็บเป็น 18.4 สมมุติถ้าเป็นหลักหน่วยก็ไม่เป็นไร เป็นค่าเวลาเช่น ว่า เวลารวมได้ 18.4 หลักหน่วยคือเลข 4 แต่ถ้าเวลารวมได้ 18.40 แล้วมันเก็บเป็น 18.4 คงจะทำให้ผิดพลาดเรื่องนาทีอ่ะครับ ขอบคุณครับ
« แก้ไขครั้งสุดท้าย: 09 กันยายน 2013, 13:03:34 โดย phongdet » บันทึกการเข้า
max30012540
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 196
ออฟไลน์ ออฟไลน์

กระทู้: 1,307



ดูรายละเอียด
« ตอบ #1 เมื่อ: 09 กันยายน 2013, 13:06:27 »

เปลี่ยนเป็น varchar ครับ (ไม่ใช้การแก้ไขที่ดีที่สุด แต่ก็พอใช้ได้)
บันทึกการเข้า
xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 493
ออฟไลน์ ออฟไลน์

กระทู้: 5,905



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 09 กันยายน 2013, 13:08:34 »

ใช้ php ช่วยเอาได้ครับ

number_format(ตัวเลข,ทศนิยมกี่ตำแหน่ง);

echo number_format(18.4,2); // 18.40
บันทึกการเข้า

@@@
Administrator
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 633



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 09 กันยายน 2013, 13:15:48 »

18.40 กับ 18.4 ไม่ได้มีค่าต่างกันเลยครับ

จะทำระบบไหนๆก็ไม่ทำให้ ผิดพลาด ครับ

 wanwan015  wanwan015
บันทึกการเข้า

รับซื้อเว็บ 100uip ต่อวันขึ้นไป EA Forex
dekmv
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 222
ออฟไลน์ ออฟไลน์

กระทู้: 3,264



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 09 กันยายน 2013, 13:17:44 »

เปลี่ยนเป็น varchar ครับ (ไม่ใช้การแก้ไขที่ดีที่สุด แต่ก็พอใช้ได้)

ตามท่านนี้เลยครับ (แต่เอามาไปคำนวณตรงๆไม่ได้ครับ ต้องใช้ php ช่วยครับ)
บันทึกการเข้า
phongdet
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 97



ดูรายละเอียด
« ตอบ #5 เมื่อ: 09 กันยายน 2013, 13:23:13 »

18.40 กับ 18.4 ไม่ได้มีค่าต่างกันเลยครับ

จะทำระบบไหนๆก็ไม่ทำให้ ผิดพลาด ครับ

 wanwan015  wanwan015

คือของผมเป็นแบบนี้ครับ แบบว่านี้คือเวลารวมฝึกงานของนักศึกษาอ่ะครับ คือคอลัมนี้ ต้องเก็บเป็นตัวเลขเพราะเป็นเวลารวม
แต่ที่มันต่างคือว่า 18.40 ชั่วโมง ก็ในความคิดของผมคือ 18 ชั่วโมง 40 นาที
แต่ 18.4 คือ 18 ชั่วโมง 4 นาทีอ่ะครับ อันนี้ความคิดผมนะครับ ไม่รู้จะถูกไหม คือมันเก็บชั่วโมงรวมทั้งหมดไว้ แบบว่า เวลาผมจะเก็บแถวใหม่ ผมก็จะเลือกมันขึ้นมาก่อนโดยใช้ คำสั่ง SUM(CTotal) แล้วก็เก็บมันลงในแถวที่เพิ่มขี้นมาใหม่ไปเรื่อยๆๆ ครับ หรือมีวิธีที่ดีกว่านี้ขอคำแนะนำด้วยครับผม
บันทึกการเข้า
phongdet
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 97



ดูรายละเอียด
« ตอบ #6 เมื่อ: 09 กันยายน 2013, 13:24:19 »

เปลี่ยนเป็น varchar ครับ (ไม่ใช้การแก้ไขที่ดีที่สุด แต่ก็พอใช้ได้)

จะลองทำดูครับขอบคุณครับ
บันทึกการเข้า
spacebar
Newbie
*

พลังน้ำใจ: 10
ออฟไลน์ ออฟไลน์

กระทู้: 67



ดูรายละเอียด
« ตอบ #7 เมื่อ: 09 กันยายน 2013, 13:47:13 »

ใช้เป็น time format อาจจะเหมาะกว่า http://dev.mysql.com/doc/refma...te-and-time-type-overview.html
บันทึกการเข้า
iCeEffecT
คนรักเสียว
*

พลังน้ำใจ: 14
ออฟไลน์ ออฟไลน์

กระทู้: 177



ดูรายละเอียด
« ตอบ #8 เมื่อ: 10 กันยายน 2013, 18:51:33 »

ไม่แนะนำให้เปลี่ยนเป็น varchar ครับ เหตุผลเพราะถ้าเก็บเป็น double เรายังใช้ query คำนวณตัวเลขช่วยได้เช่น sum ค่า หรือ order by ต่างๆ แต่การเก็บเป็น varchar มันจะไม่ช่วยในด้านนี้ครับ ท่านจะ sum ค่าตามที่บอกไม่ได้เลย ถ้าข้อมูลตัวเลขก็ควรเก็บเป็นตัวเลขดีกว่า

วิธีแก้ไขกรณีนี้ข้อมูลการเก็บไม่ได้ผิดพลาด แต่อยู่ที่การแสดงผลมากกว่า ก็ควรแสดงผลเป็น number_format(ตัวเลข,ทศนิยมกี่ตำแหน่ง); ตามที่ rep บนแนะนำครับ

ส่วนการบันทึกค่า 18.4 นั้นเป็นในหน่วยทศนิยมหลัก ถ้า 18 ชั่วโมง 4 นาทีน่าจะต้องใช้เลข 18.04 มากกว่านะครับ ถ้าคิดแบบเดิมโอกาสผิดพลาดสูงมากครับ ลองพิจารณาดูครับผม
บันทึกการเข้า
Queue
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 106
ออฟไลน์ ออฟไลน์

กระทู้: 4,294



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 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
« แก้ไขครั้งสุดท้าย: 10 กันยายน 2013, 20:15:59 โดย Queue » บันทึกการเข้า

tekub
ก๊วนเสียว
*

พลังน้ำใจ: 24
ออฟไลน์ ออฟไลน์

กระทู้: 324



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 10 กันยายน 2013, 20:59:38 »

มันผิดตั้งแต่ข้อมูลเวลา แต่ดันมาเก็บเป็น Double แล้วครับ

ถ้าเป็นแบบนี้แนะนำให้ใช้ number_format(ตัวเลข,ทศนิยมกี่ตำแหน่ง); จะดีกว่า

ถ้าจะให้ถูกต้องเก็บเป็น time ครับ มันจะได้ง่ายตอนออก report นะออ
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์