2012-09-25 23 views
2

我在使用命令參數類型爲sqldbtype.datatime未能參數值從字符串轉換爲datetime

這裏得到一個錯誤是我使用

cmd.Parameters.Add("@Posted_date", SqlDbType.DateTime).Value = Convert.ToDateTime(dt.Rows[i]["messagePostedDate"]); 

錯誤代碼「未能轉換參數值從一個字符串到DateTime「和dt.Rows [i] [」messagePostedDate「]的值是」2008-10-01 00:00:00.000「 -

有誰知道可能是什麼問題?

+3

當您收到錯誤時,Waht是dt.Rows [i] [「messagePostedDate」]的值嗎? – rrrr

+2

你得到哪個錯誤? –

+2

我向你的問題添加了一個實際問題,如果你想得到一個答案 – Patrick

回答

1

嘗試使用:

Convert.ToDateTime Method (String, IFormatProvider) 

一個數的指定字符串表示形式轉換爲等效的日期和時間,使用指定的區域性特定格式設置的信息。

1

基於您的評論,你需要解析日期時間,如:

DateTime date = DateTime.ParseExact(dt.Rows[i]["messagePostedDate"].ToString(), 
         "yyyy-MM-dd HH:mm:ss.fff", 
         CultureInfo.InvariantCulture); 

cmd.Parameters.Add("@Posted_date", SqlDbType.DateTime).Value = date; 

由於您的字符串包含日期時間格式yyyy-MM-dd HH:mm:ss.fff,你可以使用DateTime.ParseExact與您的日期格式。

+0

嗨,仍然得到相同的錯誤 – Naresh

+0

@Naresh,在什麼行你會得到的錯誤,我只是試過了,它似乎工作正常 – Habib

+0

@Habib:注意你命名日期時間變量相同datatable(或任何dt變量)。希望你不介意我改變它 – Patrick

-1

(convert(varchar,messagePostedDate,101)) as messagePostedDate使用這種在您選擇查詢 這裏是一個鏈接做參考它的T-SQL http://msdn.microsoft.com/en-us/library/ms187928.aspx

+2

當.net對添加datetime參數到sqlcommand有很好的支持時,在sql server上轉換它有什麼意義? – Patrick

+0

@Patrick它如何解決,只是試圖幫助解決問題。 –

+0

仍然不能正常工作 – Naresh

1

所有鑄造和轉換的問題是,登錄帳戶在SQL Server中的語言不匹配你的用戶界面文化語言。

.NET正試圖將您傳遞給日期格式的日期轉換爲sql服務器。它會將字符串中的日期作爲字符串傳輸,並且無法將其轉換,因爲客戶端文化與爲SQL Server登錄設置的默認「語言」不同。

要解決此問題,您需要將sql服務器會話的語言與set language xxxxx匹配,或者使用SQL Management Studio更改登錄語言或更改SQL Server默認語言。

然後它應該工作。