以下代码正常工作;从每月的1月1日到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
答案 0 :(得分: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;
...
答案 1 :(得分:2)
因为它试图将13转换为月份。
尝试使用DateTime.Parse("...", [Culture])
并指定适当的文化。
答案 2 :(得分:0)
您很可能遇到DD-MM-YY
vs MM-DD-YY
情况。它有点巧合,直到有12个月的第12天才有效。尝试更明确地使用日期;也许使用三个字母的月份代码。
答案 3 :(得分:0)
无需转换日期.ToString()。只需使用SelectedDate DateTime值作为SqlCommand查询的命名参数。如果您只需要一天,请使用DateTime.Date属性