2012-02-20 99 views
0

我將日期時間參數錯誤轉換爲字節[]。 這個想法是顯示通過控件輸入並在GridView上顯示的2個指定日期之間的數據,並使用存儲過程訪問數據。我不明白的錯誤,但我猜,所有的數據都放在一個數組並傳遞給存儲過程:無法將參數值從日期時間轉換爲字節[]

string sDateBegin = Request.Form["fromDate"]; 
DateTime dtDateBegin = Convert.ToDateTime(sDateBegin); 
SqlParameter prmDateBegin = new SqlParameter("datebegin", SqlDbType.Timestamp); 
prmDateBegin.Value = dtDateBegin; 
cmdProc.Parameters.Add(prmDateBegin); 

//same code for DateEnd 

// data table 
DataTable dataTable = new DataTable(); 

AGridView.DataSourceID = null; 

// data adapter 
SqlDataAdapter dataAdapter = new SqlDataAdapter(cmdProc); 
AGridView.DataSource = dataTable; 

//fill datatable 
dataAdapter.Fill(dataTable); 
+0

馬爾維娜您好,歡迎StackOverflow的字符串。 由於我們缺少一些信息(例如您使用的編程語言以及您使用的是哪種數據庫引擎和/或框架),因此我們在查看這裏發生的情況時遇到了一些問題。 請填寫這些空白處,幫助我們爲您提供幫助。 – 2012-02-20 16:23:10

+0

感謝您的回覆。我使用.Net框架,C#和MS SQL Server 2005. – malvina 2012-02-20 16:28:28

+0

錯誤是否發生在'DateTime dtDateBegin = Convert.ToDateTime(sDateBegin);'? 如果是這樣,這可能可以通過使用'DateTime.Parse(字符串輸入)'(請參閱http://msdn.microsoft.com/en-us/library/1k1skd40.aspx) 我可以'當然,難以分辨你提到的存儲過程和gridview控件在做什麼;) – 2012-02-21 09:12:27

回答

2

您已經定義了的SqlParameter爲時間戳數據類型(這是一個字節數組)而不是DateTime。鑑於你代表日期範圍,聽起來你應該改變參數數據類型爲DateTime。

+1

+1。另一個沒有閱讀文檔Timestamp的含義。我喜歡那個。這個問題適合於老年人的交流 - 只是一個側面提問,得到(錯誤的答案),把簡歷放在它所屬的地方 - 垃圾桶。時間戳數據類型與時間戳無關;) – TomTom 2012-02-21 09:40:04

+0

謝謝,不幸的是,我已經嘗試過這一點,它沒有任何區別,錯誤是一樣的。 – malvina 2012-02-21 10:20:23

0

發生此錯誤的原因是Convert.ToDateTime嘗試執行從任何對象到DateTime的隱式轉換。 來自控件的對象是一個字符串,但不是可以轉換爲DateTime對象的字符串。它實際上是一個由字符串表示的日期和時間。

構建DateTime對象的正確方法是通過解析與

DateTime.Parse(string input) 
相關問題