我已经编写了一个存储当前日期和代码的代码。时间价值。前天正好按照我的意愿工作。但今天它显示错误"Arithmetic overflow error converting expression to data type datetime. The statement has been terminated."
任何人都可以帮助我吗?这是我的代码,
protected void Button1_Click(object sender, EventArgs e)
{
con.Open();
string q;
q = "insert into tbl_MR(RequirementFor,Category,MRNO,CreatedBy,CreatedDate)values(@rf,@cat,@mr,@cb,@cd)";
SqlCommand cmd = new SqlCommand(q, con);
cmd.Parameters.AddWithValue("@rf", CCddl.SelectedItem.Text);
cmd.Parameters.AddWithValue("@mr", TextBox1.Text.Trim());
cmd.Parameters.AddWithValue("@cat", TextBox3.Text.Trim());
cmd.Parameters.AddWithValue("@cb", Session["loginid"].ToString());
string cd1, date1;
cd1 = System.DateTime.Today.ToShortDateString();
date1 = Convert.ToDateTime(cd1).ToString("dd/MM/yyyy");
cmd.Parameters.AddWithValue("@cd", date1.ToString());
cmd.ExecuteNonQuery();
string alertmessage = "";
alertmessage = "Component Details Saved";
this.CreateMessageAlert(this, alertmessage, "alertKey");
con.Close();
}
答案 0 :(得分:3)
您无需将日期转换为字符串,以便将其发送到SQL Server。
而不是所有这些:
string cd1, date1;
cd1 = System.DateTime.Today.ToShortDateString();
date1 = Convert.ToDateTime(cd1).ToString("dd/MM/yyyy");
cmd.Parameters.AddWithValue("@cd", date1.ToString());
这样做:
cmd.Parameters.AddWithValue("@cd", DateTime.Today);
答案 1 :(得分:1)
将您的date1
格式更改为yyyy/MM/dd
或MM/dd/yyyy
。
昨天是2012年6月12日。实际插入数据库的内容可能是2012年12月6日(12月6日对06/12)。现在是今天的第13个,你将获得例外,因为没有第13个月。
答案 2 :(得分:0)
听起来你有文化信息差异。您可以尝试将日期的ToString()方法修改为其他格式。
cmd.Parameters.AddWithValue("@cd", System.DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture));