0

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

这也没有错误

最后两行我在测试时犯了错误。但是最后 2 个示例的列被定义为 DATE 格式

任何的想法 ?或者我是否欢迎进入 Mysql 的神秘世界?

PS:我使用 MYSQL CONNECTOR 6.7.4.0 .NET3.5 和 C# 2008 Express。在我的服务器 MYSQL 是 5.0

4

1 回答 1

1

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

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

第三个版本和第二个一样,只是有一个显式ToString调用。如果MyArray是 type string[],那基本上是无操作的。

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

于 2013-11-14T14:50:27.657 回答