2

我编写了一个代码来存储当前日期和时间值。前天完全按照我的意愿工作。但是今天它显示错误"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();  
}
4

3 回答 3

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);
于 2012-06-14T03:47:15.590 回答
1

date1将格式更改为yyyy/MM/ddMM/dd/yyyy

昨天是 2012 年 6 月 12 日。实际插入数据库的可能是 2012 年 12 月 6 日(12/06 与 06/12)。现在是第 13 个月,因为没有第 13 个月,所以您得到了例外。

于 2012-06-14T03:42:29.400 回答
0

听起来你有文化信息差异。您可以尝试将日期的 ToString() 方法修改为不同的格式。

cmd.Parameters.AddWithValue("@cd", System.DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture));
于 2012-06-14T03:43:07.043 回答