แก้ปัญหาการดึงฟิลด์ datetime ที่มีค่าเป็น 0 บน c#

จำนวนการเปิดอ่าน 406
คะแนนเอกสาร

อย่างนึงใน MySQL คือ มันอนุญาตให้ใส่ ค่า 0 ลงใน ฟิลด์ DateTime ได้ ซึ่งเวลาแสดงมันจะออกมาเป็น 0000-00-00 แบบนี้

imgbox

ซึ่งพอมาใช้ .net framework ดึงข้อมูลมา จะเกิด MySqlConversionException ขึ้นมา ถ้าเจอข้อมูลพวกนี้อยู่ด้วย

Exception thrown: 'MySql.Data.Types.MySqlConversionException' in MySql.Data.dll
Exception: Unable to convert MySQL date/time value to System.DateTime, ToString: MySql.Data.Types.MySqlConversionException: Unable to convert MySQL date/time value to System.DateTime
   at MySql.Data.Types.MySqlDateTime.GetDateTime()
   at MySql.Data.MySqlClient.MySqlDataReader.GetValue(Int32 i)
   at MySql.Data.MySqlClient.MySqlDataReader.GetValues(Object[] values)
   at System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
   at System.Data.ProviderBase.SchemaMapping.LoadDataRow()
   at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)


วิธีแก้ไข

ตอนเชื่อมต่อฐานข้อมูลให้เพิ่ม

Convert Zero Datetime=True

เข้าไปด้วย แบบนี้

imgbox

ปัญหานี้ก็จะหมดไปทันที

เอกสารที่เกี่ยวข้อง