0

我有以下行:

command.Parameters.Add("@date", SqlDbType.DateTime, 8).Value = date_of_trip;

哪里date_of_trip是一个包含25-9-2013(即日-月-年)的字符串

这给了我一条错误消息:

System.ArgumentException:无法将 25-9-2013 转换为 System.DateTime。参数名称:类型---> System.FormatException:字符串未被识别为有效的日期时间。

但是,如果date_of_trip1-1-2013,它似乎工作得很好!

4

2 回答 2

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.TryParseExactformat "dd-MM-yyyy"

if (DateTime.TryParseExact(date_of_trip, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt))
{
    // ...
}
于 2013-04-15T10:45:55.137 回答
0

我猜这是因为服务器期望第一个参数是一个月。尝试使用真正的 DateTime 或格式 yyyy-mm-dd(即 2013-09-25),这应该始终有效。

于 2013-04-15T10:43:59.987 回答