为什么我的约会是编写的

时间:2013-11-14 14:40:29

标签: mysql datetime

我有一个表,其中日期列名称定义为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

1 个答案:

答案 0 :(得分:1)

在第一个版本中,您使用DateTime值的默认格式将值转换为DateTime,将然后转换为字符串。 MySQL然后试图解析它,并且可能是失败的。

在第二个版本中,您将值解析为DateTime,并直接将其提供给MySQL。这是最好的方法,尽管你需要注意你正在使用的输入格式。

第三个版本就像第二个版本一样,只有一个明确的ToString调用。如果MyArray的类型为string[],则基本上是无操作。

第四个版本直接向MySQL提供字符串输入,大概可以自己解析它。我建议避免使用这种形式 - 在.NET代码中解析它,你可以在那里控制更多。