我有以下一行:
command.Parameters.Add("@date", SqlDbType.DateTime, 8).Value = date_of_trip;
其中date_of_trip
是一个包含25-9-2013
的字符串(即日 - 月 - 年)
这给了我一条错误信息:
System.ArgumentException:无法将25-9-2013转换为System.DateTime。 参数名称:type ---> System.FormatException:String不是 被认为是有效的DateTime。
但是,如果date_of_trip
是1-1-2013
,它似乎完美无缺!
答案 0 :(得分:1)
在将字符串发送到数据库之前,您应该将字符串解析为datetime
。
例如:
DateTime dt;
if(DateTime.TryParse(date_of_trip, out dt))
{
command.Parameters.Add("@date", SqlDbType.DateTime, 8).Value = dt;
// ...
}
else
{
// you should use a CompareValidator to check if it's a valid date
}
如果您希望确保即使服务器的当前文化发生变化,您的指定格式也会有效,您可以使用格式为DateTime.TryParseExact
的{{1}}:
"dd-MM-yyyy"
答案 1 :(得分:0)
我想这是因为服务器期望第一个参数是一个月。尝试使用真实的DateTime或格式yyyy-mm-dd(即2013-09-25),它应该始终有效。