DB Date插入有时会起作用

时间:2013-04-15 10:42:13

标签: sql-server-2008 c#-3.0 asp.net-3.5

我有以下一行:

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_trip1-1-2013,它似乎完美无缺!

2 个答案:

答案 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),它应该始终有效。