使用类型为sqldbtype.datatime
这是我正在使用的代码
cmd.Parameters.Add("@Posted_date", SqlDbType.DateTime).Value = Convert.ToDateTime(dt.Rows[i]["messagePostedDate"]);
错误是“无法将参数值从String转换为DateTime”,dt.Rows [i] [“messagePostedDate”]的值为“2008-10-01 00:00:00.000” -
有谁知道可能是什么问题?
答案 0 :(得分:1)
尝试使用:
Convert.ToDateTime Method (String, IFormatProvider)
使用指定的区域性特定格式信息,将指定的数字字符串表示形式转换为等效的日期和时间。
答案 1 :(得分:1)
根据您的评论,您需要解析DateTime,如:
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与日期格式一起使用。
答案 2 :(得分:1)
问题是SQL Server中登录帐户的语言与您的ui文化语言不匹配。
.NET正在尝试将您传递的日期转换为sql server中的日期格式。它会将clinet中的日期作为字符串传输,并且无法转换它,因为客户端文化与为SQL Server登录设置的默认“语言”不同。
要解决此问题,您需要将sql server会话的语言与set language xxxxx
匹配,或者使用SQL Management Studio更改登录语言或更改SQL Server默认语言。
然后它应该工作。
答案 3 :(得分:-1)
(convert(varchar,messagePostedDate,101)) as messagePostedDate
在您的选择查询中使用此选项
这里有一个参考链接,它具有T-SQL的所有转换和转换
http://msdn.microsoft.com/en-us/library/ms187928.aspx