C#日期时间算术溢出错误

时间:2012-06-14 03:36:39

标签: c# sql datetime

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

3 个答案:

答案 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/ddMM/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));