无法将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