C# 每月13日当天及之后出错;从字符串转换日期和/或时间时
下面的代码工作正常;每月1日至12日;然而,当我点击13号或更大的日期时,我得到了这个错误C# 每月13日当天及之后出错;从字符串转换日期和/或时间时,c#,asp.net,sql,C#,Asp.net,Sql,下面的代码工作正常;每月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 cmd
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中的保存方式,因为它试图将13转换为月份
请尝试使用DateTime.Parse…,[Culture]并指定适当的区域性。不,不要这样绑定日期。让.NET数据提供程序为您处理这个问题-应用程序和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;
...
最有可能的情况是你遇到了DD-MM-YY vs MM-DD-YY的情况。这是一个太多的巧合,它的工作,直到第12天,当有12个月。尽量更明确地使用日期;可能使用三个字母的月代码。不需要将日期转换为字符串。只需将SelectedDate DateTime值用作SqlCommand查询的命名参数。如果您只需要日期,请使用DateTime.Date属性猜测您的数据库未配置为该日期格式。因此,当你选择13或更高,它认为是月而不是日。您使用的是什么风格的数据库?