我使用方法adddays()来计算从今天起7天和28天之后的日期,或者当我试图将值插入数据库表字段currect_date和crush_date日期类型字段时,它显示adddays(28)值是不正确的日期/时间值。
DateTime d = new DateTime();
d = DateTime.Today;
cmd = new SqlCommand("insert into sq_crush (currect_date,crush_date) values ('" + d.AddDays(7).ToShortDateString() + "','" + d.AddDays(28).ToShortDateString() + "')", cn);
if (cn.State == ConnectionState.Closed)
cn.Open();
// MessageBox.Show(dd);
cmd.ExecuteNonQuery();
如果我改变了28到14它没有任何麻烦但是如果我使用超过14的任何值它会显示相同的错误
"从字符串转换日期和/或时间时转换失败。"
如何使其工作,因为它适用于14以下的值,如果有任何其他方式在28或23之后或某个特定日期之后的任何天数获得日期。
一般情况下,我想在三个字段中插入日期,第一个是今天,第二个是从第一个日期起7天后的日期,我对此没有任何问题,最后一个是28天后的日期 请帮帮我
答案 0 :(得分:2)
将日期作为字符串传递时会出现这种问题。你不一定知道正确的格式是什么,听起来你的SQL Server不同意月份应该去的地方(在字符串中的第一个位置或第二个位置);当您提供的日期过高而不是一个月时,SQL Server会抛出错误。
您可以通过将日期作为DateTime参数传递来避免整个问题(以及其他问题),如下所示:
DateTime d = DateTime.Today;
var sql = "insert into sq_crush (currect_date,crush_date) values (@date1,@date2)";
var cmd = new SqlCommand(sql, cn);
cmd.Parameters.AddWithValue("@date1", d.AddDays(7));
cmd.Parameters.AddWithValue("@date2", d.AddDays(28));
if (cn.State == ConnectionState.Closed)
cn.Open();
cmd.ExecuteNonQuery();
答案 1 :(得分:0)
那是因为14天会让你超过12日。因此,假设您提供的格式与SQL服务器认为您提供的格式不同。
如果您选择不使用参数化查询,那么您的日期格式应与SQL服务器所期望的相匹配。