Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#日期-时间算法过流错误_C#_Sql_Datetime - Fatal编程技术网

C#日期-时间算法过流错误

C#日期-时间算法过流错误,c#,sql,datetime,C#,Sql,Datetime,我已经为存储当前日期和时间值编写了一个代码。前天它完全按照我的要求工作。但今天它显示了错误“将表达式转换为数据类型datetime时出现算术溢出错误。该语句已终止。” 有人能帮我吗?这是我的密码 protected void Button1_Click(object sender, EventArgs e) { con.Open(); string q; q = "insert into tbl_MR(RequirementFor,Category,MRNO,Create

我已经为存储当前日期和时间值编写了一个代码。前天它完全按照我的要求工作。但今天它显示了错误
“将表达式转换为数据类型datetime时出现算术溢出错误。该语句已终止。”

有人能帮我吗?这是我的密码

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();  
}

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


昨天是2012年6月12日。实际插入数据库的可能是2012年12月6日(2006年12月与2012年6月)。既然今天是13号,您将得到一个例外,因为没有13个月。

将您的
date1
格式更改为
yyyy/MM/dd
MM/dd/yyyyy


昨天是2012年6月12日。实际插入数据库的可能是2012年12月6日(2006年12月与2012年6月)。今天是13号,你得到了一个例外,因为没有13个月。

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

cmd.Parameters.AddWithValue("@cd", System.DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture));

听起来你的文化信息不一致。您可以尝试将日期的ToString()方法修改为其他格式

cmd.Parameters.AddWithValue("@cd", System.DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture));

要将日期发送到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);

要将日期发送到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);

检查
DateTime
是否在有效范围内也是一个好主意
DateTime
的最小日期为
0000/01/01
,而SQL DateTime的最小日期为
1753/01/01
。在这种情况下也可能发生“算术溢出”错误。最好检查
日期时间
是否在有效范围内
DateTime
的最小日期为
0000/01/01
,而SQL DateTime的最小日期为
1753/01/01
。在这种情况下也可能发生“算术溢出”错误。