我正在嘗試使用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