我有一个表,其中日期列名称定义为proddate并定义为DATE。
以下是我将值写入表中的代码:
cmd.Parameters.Add("@Mydate", MySqlDbType.DateTime).Value = Convert.ToDateTime(MyArray[4]).ToString();
这给出了0000-00-00的结果
当我将其更改为
时cmd.Parameters.Add("@Mydate", MySqlDbType.DateTime).Value = Convert.ToDateTime(MyArray[4]);
结果是正确的。例如:2013-11-14
然而,有几行我有这段代码
cmd1.Parameters.Add("@date", MySqlDbType.DateTime).Value = Convert.ToDateTime(MyArray[4].ToString());
这没有错误。我在表格中得到了正确的结果
在我使用相同的方法获得此代码之后的几行:
cmd3.Parameters.Add("@Mydate", MySqlDbType.DateTime).Value = MyArray[4].ToString();
这也没有错误
最后两行我做错了测试。但是最后两个例子的列被定义为DATE格式
有什么想法吗?或者我欢迎来到神秘的Mysql世界?
PS:我使用MYSQL CONNECTOR 6.7.4.0 .NET3.5和C#2008 Express。在我的服务器MYSQL是5.0
答案 0 :(得分:1)
在第一个版本中,您使用DateTime
值的默认格式将值转换为DateTime
,将然后转换为字符串。 MySQL然后试图解析它,并且可能是失败的。
在第二个版本中,您将值解析为DateTime
,并直接将其提供给MySQL。这是最好的方法,尽管你需要注意你正在使用的输入格式。
第三个版本就像第二个版本一样,只有一个明确的ToString
调用。如果MyArray
的类型为string[]
,则基本上是无操作。
第四个版本直接向MySQL提供字符串输入,大概可以自己解析它。我建议避免使用这种形式 - 在.NET代码中解析它,你可以在那里控制更多。