MySQL DateTime 的 C# 输入字符串格式不正确

Posted

技术标签:

【中文标题】MySQL DateTime 的 C# 输入字符串格式不正确【英文标题】:C# Input string was not in correct format for MySQL DateTime 【发布时间】:2015-10-13 18:08:39 【问题描述】:

我浏览了有关此的各种信息,经过一个小时的搜索,我找不到任何有关它的信息,所以我不得不专门询问一些事情。

在我的 mysql 数据库中,我有一系列带有 Created_dt 列的表,这是一个 DateTime(6) 字段。数据示例如下:2015-06-19 11:52:07.000000

出于某种原因,我可以从数据库中的任何表中提取除此之外的任何列。每当我创建连接字符串并使用适配器填充数据表时,我都会在标题中看到错误。代码:

MySqlCommand cmd = new MySqlCommand("Select Created_dt from comptran_bulk", connection);
MySqlDataAdapter da = new MySqlDataAdapter(cmd as MySqlCommand);
DataTable dt = new DataTable();
da.Fill(dt); // This is where the exception is thrown, when data is loaded into the table.

此命令最终将被"Select * from view_Sales" 替换,因此我认为以不同方式对其进行转换的解决方案行不通。此外,Created_dt 的所有值都不是 Null,因此“允许零”DateTime=True 也不起作用。

你有什么建议?

【问题讨论】:

cmd2 到底是什么?你在哪一行得到这个FormatException 我的编辑打错字了,抱歉! 添加了有关异常行的信息。 【参考方案1】:

答案是 2012 年的旧错误单。

"[2012 年 6 月 1 日 13:39] 丹·伯杰 这似乎在 6.4.5 中没有得到修复 - 我仍然得到 FormatException。

如果有帮助,我可以进一步缩小问题范围:

MySqlDateTime 成功 = new MySqlDateTime("2012-01-01 12:00:00");

MySqlDateTime 失败 = new MySqlDateTime("2012-01-01 12:00:00.123456"); // 抛出格式异常

我的服务器是“MySQL 5.1.41-3ubuntu12.10”,如果有区别的话。”

在 C# .NET 中使用它时,微秒是导致错误的原因。在将事情修改为 datetime(0) 而不是 datetime(6) 之后,事情就开始起作用了。

【讨论】:

我相信这是由迁移向导引起的。我正在从 SQL 2008 R2 迁移到 MySql。

以上是关于MySQL DateTime 的 C# 输入字符串格式不正确的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 为 MySQL 转换 DateTime

c# 怎么向mysql 插入时间datetime

如何在 C# 中使用 mysql xdevapi 设置 DateTime

琐事:如何将 JSON2.org DateTime 字符串转换为 C# DateTime

插入 DateTime(从 C# 到 MySQL)

从 C# 到 MySQL 的 DateTime:不完整的存储