从 DataReader 访问 DateTime 字段时出现 MySqlConversionException

Posted

技术标签:

【中文标题】从 DataReader 访问 DateTime 字段时出现 MySqlConversionException【英文标题】:MySqlConversionException when accessing DateTime field from DataReader 【发布时间】:2010-10-17 03:32:16 【问题描述】:

我有一个基于 mysql 的 C# 应用程序,使用 MySQL Connector;我正在尝试制作一个 DataReader 请求,查询执行良好,但是,当尝试访问 DateTime 字段时,我得到 MySqlConversionException "Unable to convert MySQL date/time value to System.DateTime"

这是原型

if (dr != null && !dr.Read()) return;

sesion.Id = Convert.ToInt32(dr["id"]);
sesion.Usuario = Convert.ToInt32(dr["usuario"]);
sesion.Estado = Convert.ToByte(dr["estado"]);
// doesn't work
sesion.FchCreacion = Convert.ToDateTime(dr["fch_creacion"]);

有什么建议吗? 提前致谢

【问题讨论】:

【参考方案1】:

如果您的 MySQL 数据库中的日期时间值为零 (00/00/0000 00:00),则有时会发生此错误。尝试将其添加到连接字符串的末尾:

Allow Zero Datetime=true

【讨论】:

【参考方案2】:

在 MySQL 日期/时间和 .NET 日期时间之间进行转换时可能会遇到一些问题,但有一个 useful section in the MySQL documentation 提供有关如何处理这些问题的建议。

【讨论】:

@jkw4703:我已经修复了链接。【参考方案3】:

我建议这可能是特定于文化的错误 - 应用程序是否与数据库位于同一服务器上,它们是否具有相同的文化设置?

另外,该列在 MySQL 中是否绝对是日期时间?

【讨论】:

【参考方案4】:

它也可以是一个 DBNull 值。

【讨论】:

以上是关于从 DataReader 访问 DateTime 字段时出现 MySqlConversionException的主要内容,如果未能解决你的问题,请参考以下文章

通过python中的yahoo和pandas_datareader获取来自不同市场的市场数据

具有重复列名的 DataReader

DATASET 和 DATAREADER区别

我应该如何跟踪打开的 DataReader?

使用 SQL DataReader 中的变量 [重复]

无法从 .NET OleDB.DataReader 检索行