日期时间在c#中不起作用

时间:2016-03-11 10:15:21

标签: c# sql

我有一个名为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;

}

4 个答案:

答案 0 :(得分:6)

SQL不支持

"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);