不能使用IDataReader的GetDateTime方法分配日期

本文关键字:方法 分配 日期 GetDateTime IDataReader 不能 | 更新日期: 2023-09-27 18:11:32

我的binder方法末尾的以下语句抛出错误:

return reader.GetDateTime(ordinal);

Reader是IDataReader的一个实例。在调试器中,我发现ordinal的值为1,reader[1]的值为"12/31/9999"

抛出的错误是"指定的类型转换无效"

有什么问题吗?为什么不能将其转换为DateTime对象?

不能使用IDataReader的GetDateTime方法分配日期

Call reader.GetValue(1).GetType().Name;很可能你的数据库类型是String,而不是DateTime。

你可以试试DateTime.Parse(reader.GetValue(1).ToString());

reader1的值为"12/31/9999"

带引号?也就是说,数据类型是字符串类型还是某种字符类型?根据MSDN,底层数据类型需要是DateTime:

不执行任何转换;因此,检索到的数据必须已经是DateTime对象。

如果是这种情况,您需要以字符串的形式获取值并自己进行转换。比如:

var date = reader.GetString(ordinal);
var result = DateTime.MinValue;
DateTime.TryParse(date, out result);
return result;