2015-05-21 247 views
1

我有一個nvarchar類型的列表。我會通過以下參數:將DateTime轉換爲nvarchar

cmd.Parameters.Add("@PointDate", SqlDbType.NVarChar).Value = DateTime.Now; 

和expected'm得到錯誤:

Additional information: Error converting data type nvarchar to datetime.

如何轉換日期時間爲nvarchar?

+3

'DateTime.Now'的'SqlDbType.NVarChar'? o.O如果你的列是'NVarChar',爲什麼你給它發送'DateTime'值?如果您發送'DateTime'值,爲什麼您的列是'NVarChar'?您應該**總是**爲您的值選擇正確的數據類型。閱讀[不良習慣踢:選擇錯誤的數據類型](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong-data- type.aspx) –

+6

不要將'DateTime'轉換爲字符串/ nvarchar。相反,將它作爲DateTime傳遞,請確保您的表中的字段也是DateTime類型的DateTime – Habib

+0

您始終可以在DateTime對象上調用ToString()。但正如前面的評論指出的那樣,類型的選擇不好。 – Kryptos

回答

1

它看起來像你試圖在你的數據庫中做的任何事情都期待一個名爲「PointDate」,但類型NVarChar的參數。當然,你可以改變,要成爲一個日期類型:

cmd.Parameters.Add("@PointDate", SqlDbType.DateTime).Value = DateTime.Now; 

,如果你所做的一切在數據庫中確實已經是一個字符串,然後

cmd.Parameters.Add("@PointDate", SqlDbType.NVarChar).Value = DateTime.Now.ToString(); 

的您可能需要添加一個格式說明符ToString函數來匹配您的數據庫所期望的任何內容。

+0

轉到此解決方案,此答案將解決該問題。 –

+0

它工作Gilchrist,謝謝。 –

+2

它的工作原理,但它** **幫助**?您絕對不應該使用字符串類型來保留日期值。爲您的列使用適當的數據類型。 –