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 に変換できません。パラメータ名: type ---> System.FormatException: String は有効な DateTime として認識されませんでした。

ただし、 の場合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 に答える