每月13日及以后出错; 从字符串转换日期和/或时间时

Zee*_*pro 0 c# sql asp.net

下面的代码工作正常; 从每月的1月1日到12日; 但是,只要我点击13日或更长的日期,我就会收到此错误

Conversion failed when converting date and/or time from character string.
Run Code Online (Sandbox Code Playgroud)

这是我的代码

 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();
Run Code Online (Sandbox Code Playgroud)

谢谢您帮忙

这是日期在数据库中的保存方式 2012-01-13

Stu*_*tLC 6

不,永远不要约束这样的日期.让.NET数据提供程序为您处理这个问题 - 在App和Sql Server上使用locales有太多陷阱让您使用字符串作为日期.

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;
...
Run Code Online (Sandbox Code Playgroud)