我正在尝试使用ADO.NET通过存储过程进行数据库更新。带日期时间参数问题的ADO.NET更新命令
基本上我设置的所有参数和命令,并且已经设置像下面
DbParameter nm8 = provider.CreateParameter();
nm8.ParameterName = "@EDITDATE";
nm8.DbType = System.Data.DbType.DateTime;
nm8.Value = aObject.ADateTime;
command.Parameters.Add(nm8);
在存储过程中的参数中的一个,该输入参数被定义为
@EDITDATE datetime = null,
和基本上存储的proc所做的只是获得一条记录,并通过传入的EDITDATE进行更新。
但我收到此错误
将数据类型varchar转换为datetime时出错。
,什么我发现是,时间值被传递到存储过程作为像下面
2010-02-03 15:26:54.3100000
代替
2010-02-03 15:26:54.310
,我认为这是什么原因造成的铸造错误。
所以我的问题是为什么ado.net以该格式转换日期时间? 如何解决该问题而不以字符串形式传递值。
非常感谢。
感谢您的答复, ADateTime确实是DateTime类型。 这就是我不明白,DbType设置为DateTime 和传入的值也是一个DateTime对象(DateTime?精确) 这不是我需要做的吗?为存储过程中的日期时间参数? – Eatdoku 2010-02-04 01:42:46
@Eatdoku这绝对很奇怪。我从来没有将DateTime传递给存储过程的任何问题。你需要多少精度?你可以将DateTime四舍五入到最接近的秒数吗? – 2010-02-04 01:52:56
在我的情况下,最接近的一秒就足够了。 但我认为问题在于如何。net传递给存储过程时将DateTime转换为字符串。 我现在的解决方案是直接传递DateTime.Tostring(格式)作为DbType.String,它工作正常。 仍然对知道ado.net如何转换datetime以及为什么会看到这个奇怪的结果感兴趣。 谢谢 – Eatdoku 2010-02-04 16:53:41