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

时间:2010-05-29 11:39:02

标签: c# mysql datetime date ibatis

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

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

9 个答案:

答案 0 :(得分:73)

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()

那已经解决了

答案 1 :(得分:9)

添加"转换零日期时间=真"连接字符串解决了我的问题。

<connectionStrings>   <add name="MyContext" connectionString="Datasource=localhost;Database=MyAppDb;Uid=root;Pwd=root;CHARSET=utf8;convert zero datetime=True" providerName="MySql.Data.MySqlClient" /> </connectionStrings>

此致 PS

答案 2 :(得分:6)

格式问题,实际上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-format

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

答案 3 :(得分:5)

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

update table set date = null

答案 4 :(得分:2)

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

答案 5 :(得分:0)

这对我有用:

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

答案 6 :(得分:0)

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

<add name="NAMEOFYOURCONNECTIONSTRING" connectionString="server's HOSTNAMEorIP(i.e Localhost or IP address);user id=USER_ID(i.e User ID for login Database);Pwd=PASSWORD(i.e User Password for login Database);persistsecurityinfo=True;database=NAMEOFDATABASE;Convert Zero Datetime=True" providerName="MySql.Data.MySqlClient"/>

答案 7 :(得分:0)

有一件事也在改变你的读者行动。 当我写

时,我遇到了这个问题
string myvar = reader.GetString(0);

然后我曾经写过这个

object myvar = reader.GetValue(0);

不再有错误。

答案 8 :(得分:0)

当我将表中的日期列设置为0而不是null时,这个问题发生了。我的代码中有一个错误。

查看表,我可以看到该字段的日期设置为000-00-00-一旦我将违规字段重置为空,问题就消失了。