2

私はc#プロジェクトに取り組んでおり、winformを使用しています。

ここでの問題は、クエリが以前は機能していたが、現在は機能していないことです。

ここでtodaydateは、datetimePickerこれは短い日付形式に設定されており、列のデータ型はsmalldatetimeエラーです。

 The conversion of a nvarchar data type to a
     smalldatetime data type resulted in an out-of-range value.
    The statement has been terminated.

2つの日時ピッカーが1つは日付用、2つ目は時刻用の場合、どのように挿入できますか?案内してくれませんか

4

3 に答える 3

5

AddWithValue渡した値からパラメータのデータ型を決定します。

あなたの場合、あなたは文字列を渡しているので、パラメータはデータベースによって期待される日時としてではなく、文字列としてデータベースに渡されます

その行を変更する必要があります

cmd.Parameters.AddWithValue("@today", todaydate.Value);
于 2013-01-18T14:02:51.813 に答える
4

現在、テキスト値を渡しています。つまり、他の何かがそれを日付として解析する必要があります。そうしないでください。を持っているとすると、それが提供する値をDateTimePicker使用する必要があります。DateTime

cmd.Parameters.AddWithValue("@today", todaydate.Value);

...または、最初に特定のタイプ(SqlDbType.SmallDateTime)を使用してパラメーターを作成してから、を使用して値を設定しますtodaydate.Value。重要な点は、文字列変換を回避することです。

可能な限り、値をテキストに変換することは避けてください。それらDateTimeを可能な限り「自然な」形式(この場合など)に保ちます。入力時に、自然な形式に解析します。文字列への変換を回避できる場合は、そうしてください。

于 2013-01-18T14:02:53.870 に答える
0

time7データベースのあなたの列はであると思います、smalldatetimeそしてあなたはそれに割り当てようとしましたstring。私はそれを提案しません。

Add()このような方法で試してください。

command.Parameters.Add("@today", SqlDbType.SmallDatetime);
command.Parameters["@today"].Value = todaydate.Value;

AddWithValue()または、このように使用することもできます。

cmd.Parameters.AddWithValue("@today", todaydate.Value);
于 2013-01-18T14:03:56.837 に答える