0

以下のコードは正常に動作します。毎月 01 日から 12 日まで。ただし、13日以降の日付をクリックするとすぐに、このエラーが発生します

Conversion failed when converting date and/or time from character string.

この私のコード

 DateTime dt = Convert.ToDateTime(Calendar1.SelectedDate.ToString("yyyy-MM-dd"));

    myConnection.Open();
    string cmdStr1 = "SELECT COUNT(*) FROM Payment WHERE PaymentDate = '" + dt + "'";
    SqlCommand PIDexist1 = new SqlCommand(cmdStr1, myConnection);
    int temp1 = Convert.ToInt32(PIDexist1.ExecuteScalar().ToString());
    myConnection.Close();

お手伝いありがとうございます

これは、データベースに日付を保存する方法です2012-01-13

4

4 に答える 4

6

いいえ、そのように日付をバインドしないでください。.NET データ プロバイダーにこれを処理させてください。文字列を日付として使用するには、App と SQL Server のロケールには多くの落とし穴があります。

myConnection.Open();
string cmdStr1 = "SELECT COUNT(*) FROM Payment WHERE PaymentDate = @dt'";
SqlCommand PIDexist1 = new SqlCommand(cmdStr1, myConnection);
SqlParameter parameter = PIDexist1.Parameters.Add("@dt", System.Data.SqlDbType.DateTime);
parameter.Value = dt;
...
于 2012-09-14T13:19:21.187 に答える
2

13を月として変換しようとしているためです。

DateTime.Parse("...", [Culture])適切なカルチャを使用して指定してみてください。

于 2012-09-14T13:18:25.993 に答える
0

ほとんどの場合、DD-MM-YY対のMM-DD-YY状況に遭遇しています。12ヶ月あるのに12日目まで動くなんて偶然すぎる。日付の使用をより明確にするようにしてください。おそらく、3 文字の月コードを使用してください。

于 2012-09-14T13:19:49.520 に答える
0

日付 .ToString() を変換する必要はありません。SelectedDate DateTime 値を名前付きパラメーターとして SqlCommand クエリに使用するだけです。日のみが必要な場合は、DateTime.Date プロパティを使用します。

于 2012-09-14T13:20:42.403 に答える