无法使用IDataReader的GetDateTime方法指定日期

时间:2014-07-03 17:46:07

标签: c# .net ado.net

我的binder方法结束时的以下语句会引发错误:

return reader.GetDateTime(ordinal);

Reader是IDataReader的一个实例。 在调试器中,我发现序数的值为1,读者[1]的值为“12/31/9999”

抛出的错误是“指定的强制转换无效”

这里有什么问题?为什么不能将它转换为DateTime对象?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

  

读者1的值为" 12/31/9999"

带引号?也就是说,数据类型是某种字符串或字符类型?根据{{​​3}},基础数据类型必须是DateTime:

  

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

如果是这种情况,您需要将值作为字符串获取并自行转换。也许是这样的:

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