ผมเจอปัญหาเกี่ยวกับวันที่ 29 ก.พ. 2551 ใน mysql 5

เกี่ยวกับ ปัญหาการใช้งาน การติดตั้ง ฐานข้อมูล MySql Oracle MSSQL ect...
การเขียน คำสั่ง SQL เพื่อดึกข้อมูล บอร์ดนี้ควรระบุโครงสร้างตารางของท่านในคำถามด้วยนะ

Moderator: mindphp

User avatar
mushu
PHP Newbie
PHP Newbie
Posts: 1
Joined: 01/01/1970 7:00 am

ผมเจอปัญหาเกี่ยวกับวันที่ 29 ก.พ. 2551 ใน mysql 5

Post by mushu »

field ที่เก็บวันที่กำหนดชนิดเป็น date

เก็บ 2008-02-29 ได้ แต่เก็บ 2551-02-29 ไม่ได้

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 24466
Joined: 22/09/2008 6:18 pm
Contact:

Post by mindphp »

ปัญหา ยังไง หรือคับ มันก็ ควรจะเป็น อย่างนั้น นี่ครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

User avatar
me
PHP Newbie
PHP Newbie
Posts: 2
Joined: 01/01/1970 7:00 am

เป็นปัญหาแบบเดียวกันเลยครับ

Post by me »

ผมเข้าใจว่า mysql ที่ใช้นั้น ตัว server ไม่ได้ใช้ locale ไทย
แต่พอผมแก้ไขให้ server ใช้ locale เป็น ไทย แล้ว ก็ยังไม่สามารถ
ใส่ข้อมูลลักษณะ '2551-02-29' ใน field date ได้

เพราะ วันที่ 29-02-2551 สำหรับ ปีแบบ ค.ศ. นั้นปีดังกล่าวในเดือน
กุมภาพันธ์ มีเพียง 28 วันเท่านั้น

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

หมายเหตุ ใน server ตัวเก่านั้น ใช้งานกับวันที่ดังกล่าวได้นะครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 24466
Joined: 22/09/2008 6:18 pm
Contact:

Post by mindphp »

ลองดู กระทู้นี้ครับ
https://www.mindphp.com/modules.php?name ... pic&t=2161
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

User avatar
me
PHP Newbie
PHP Newbie
Posts: 2
Joined: 01/01/1970 7:00 am

พอเข้าใจละครับ แต่ยังไม่ได้ผลตามต้องการ

Post by me »

ขอบคุณครับ สำหรับคำแนะนำ
ผมลอง select doc_no,date_sub(doc_date,interval 543 year) from sales;
ผลที่ได้คือ วันที่เปลี่ยนจาก ปี 2551 เป็น 2008 ทั้งหมด

แต่ปัญหาที่ผมมีอยู่คือ ผมต้องการทำสำเนา วันต่อวัน ข้อมูลจาก
server เก่ามายัง server ใหม่
ซึ่งทำงานมาได้ตลอดเวลา ไม่มีอะไรผิดสักเกตุ
มาถึงวันที่ 29-02-2551 เท่านั้น ก็พบปัญหา

ใน server เก่านั้น สามารถบันทึกวันที่ เป็น '2551-02-29' ลงใน
field date ได้ครับ
แต่ใน server ใหม่ นั้น ข้อมูลอื่นๆ บันทึกได้หมด ยกเว้นวันที่ใน
field date เท่านันที่บันทึกเป็น '0000-00-00' แทนที่จะเป็น '2551-02-29' ครับ

ซึ่งวันที่ดังกล่าวก็มีเพียงไม่กี่ record เท่านั้น
พอดูรายงานต่างๆ ที่ดึงข้อมูลมาจากเครื่องนี้ ก็จะคำนวณผิดพลาด

ผมเองอยากรู้ว่ามันเกิดจาก locale ของ os
หรือ เป็นปัญหาของ mysql5 กันแน่ครับ
และพอมีแนวทางแก้ปัญหาได้บ้างมั้ยครับ

ผมเองอยากทำให้ mysql ใน เครื่อง server ตัวใหม่นี้
สามารถรับข้อมูลวันที่ แบบ date ที่เป็น '2551-02-29' ได้ครับ

ขอบคุณครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 24466
Joined: 22/09/2008 6:18 pm
Contact:

Post by mindphp »

เข้าใจ ว่า วันที่ 29-02-2551 (วันที่ 29 ของเดือน 02 คศ. 2551 มันไม่มีอยู่จริงครับ เป็น รูปแบบวันที่ไม่ถูกต้อง )
mysql จะเก็บ ของมูล เป็น คศ. ไม่ใช่ พศ. (เพราะฉนั้น ไม่ใช่ ปัญหา ของ mysql5 แต่เป็นปัญหาที่ข้อดูเดิมที่ไม่ถูกต้องเหมือนกันเรากรอก 32-01-2008 นั่นแหละครับ)
ลองดูแนวทางแก้ที่ลิงค์ ที่ให้ไปครับ ใช้ function นั้น ช่วย แปลง พศ. ให้เป็น คศ. ได้
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “SQL - Database”

Who is online

Users browsing this forum: No registered users and 6 guests