mysql - 为什么我的日期写为 0000-00-00

标签 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();

这也没有给出错误

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

有什么想法吗?或者说我欢迎来到 Mysql 的神秘世界?

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

最佳答案

在第一个版本中,您使用 DateTime 的默认格式将值转换为 DateTime,然后then 转换为字符串> 值(value)。然后 MySQL 尝试解析它,但可能会失败。

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

第三个版本与第二个版本类似,只是有一个显式的 ToString 调用。如果 MyArray 的类型为 string[],则基本上是无操作。

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

关于mysql - 为什么我的日期写为 0000-00-00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19980524/

相关文章:

python - 减去存储在两个单独列表中的 datetime.time 对象

php - 查找接下来的 13 个星期一和最后一个星期一

php - 如何将动态数据从 mysql 拉到 anguarJS 然后谷歌地图标记

mysql - SQL 外键和引用其他表

mysql - 以下关系中的候选键是什么

r - 日期的时间距离矩阵

c# - 发布到 Web 服务器后将字符串转换为 DateTime 时出错

mysql - 聊天的数据库架构 : private and group

mysql - DateTime 的 ServiceStack ORMLite SqlList 问题

c# - 具有斯洛文尼亚文化的日期时间 (sl-SI) 有空格