无法将MySQL日期/时间值转换为System.DateTime

我正在使用ibatis和C#。 我从具有CreatedDate作为字段之一的选择查询中获得结果。 Mysql中CreatedDate的数据类型是Date。 我将select查询的结果集分配给Ilist 。

这里的DeliveryClass CreatedDate为DateTime。 当我运行应用程序时,我无法将MySQL日期/时间值转换为System.DateTime 。 可能是什么问题呢?

格式化的问题,实际上mysql对于日期/时间数据类型有不同的格式(yyyy-mm-dd)并且为了解决这个问题,请从这里使用.net的mysql连接器库http://dev.mysql.com / downloads / connector / net /它将为日期/时间提供名为MysqlDateTime的其他数据类型

或者您可以使用DATE_FORMAT(日期,格式)格式化sql语句中的日期/时间数据,您可以从此处获取更多详细信息http://dev.mysql.com/doc/refman/5.1/en/date-and-time -functions.html#function_date格式

但我不推荐这个,因为你会失去日期/时间数据类型的力量(例如你无法比较),因为现在你将它转换为字符串,但我认为它将在报告中有用

MySqlConnection connect = new MySqlConnection("server=localhost; database=luttop; user=root; password=1234; pooling = false; convert zero datetime=True"); 

convert zero datetime=True添加到连接字符串将自动将0000-00-00日期值转换为DateTime.MinValue()

这已经解决了

将“convert zero datetime = True”添加到连接字符串解决了我的问题。

    

关心PS

我通过将列的默认值设置为null数据而不是使用0000-00-00 00:00:00来解决我的问题:

 update table set date = null 

它可能超出DateTime对象的范围。 我见过几次。 尝试更改sql以返回当前日期而不是列,并查看是否通过确定。

这对我有用:

 SELECT IF(tb.Date1 = '0000-00-00 00:00:00', NULL, tb.Date1) AS ValidDate FROM MyTable AS tb 

有效的一件事就是改变你的读者行为。 我写的时候遇到了这个问题

 string myvar = reader.GetString(0); 

然后我常常写这个

 object myvar = reader.GetValue(0); 

没有更多的错误。

您需要使用为MySql数据库添加的连接字符串进行简单更改。 CONVERT ZERO DATETIME = TRUE