我有一个名为Tbl_Sud_Details
的表,它有三列:
Name is varchar(),
Course is varchar(),
DateofAdmission is Datetime(),
当我以dd/mm/yyyy
格式插入日期时,会出现错误:
错误:将varchar数据类型转换为日期时间数据类型 导致超出范围的价值。该声明已被终止
SqlCommand cmd = new SqlCommand("Insert into Tbl_Sud_Details(Name,Course,DateofAdmission)Values('" + ddlname.SelectedItem.Text + "','" + txtcourse.Text + "','" +Convert.ToDateTime(txtAdddate.Text).ToString("dd/MM/yyyy") + "')", con);
con.Open();
int i = cmd.ExecuteNonQuery();
con.Close();
if (i > 0)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "k1", "<script language=javascript> alert(\"data is save Successfully \"); </script>");
return;
}
答案 0 :(得分:6)
"dd/MM/yyyy"
。请尝试"yyyy-MM-dd"
。为了避免注入攻击,我会使用参数来提交数据。
using (MySqlConnection con = new MySqlConnection(connString))
{
string stm = "Insert into Tbl_Sud_Details(Name,Course,DateofAdmission)Values(@Name,@Course,@DateofAdmission)";
using (SqlCommand cmd = new SqlCommand(stm))
{
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = ddlname.SelectedItem.Text;
cmd.Parameters.Add("@Course", SqlDbType.VarChar).Value = txtcourse.Text;
cmd.Parameters.Add("@DateofAdmission", SqlDbType.DateTime).Value = Convert.ToDateTime(txtAdddate.Text);
con.Open();
int i = cmd.ExecuteNonQuery();
con.Close();
}
}
答案 1 :(得分:1)
根据您使用的数据库后端,您可能需要以不同方式编码日期。
有关SQL Server中的示例,请参阅以下问题: Sql query to insert datetime in SQL Server
答案 2 :(得分:0)
SQL了解此格式“yyyy-MM-dd”。因此您的自定义日期时间格式必须遵循默认日期时间。当您发送默认日期时间时,它会通过sql理解。同样在ui中进行客户端视图,您可以根据需要对其进行格式化,但发送到数据库时必须遵循默认格式
答案 3 :(得分:0)
SqlCommand cmd = new SqlCommand(“Insert into Tbl_Sud_Details(Name,Course,DateofAdmission)Values('”+ ddlname.SelectedItem.Text +“','”+ txtcourse.Text +“',CONVERT(datetime,'” + txtAdddate.Text +“',103))”,con);