如何删除两个日期范围之间的日期而不删除整行?

时间:2016-08-03 19:39:26

标签: c# asp.net

我正在尝试创建一个计划页面,员工可以在其中插入休假时间,并删除该特定日期范围的数据。

我有两个日期范围的文本框,我尝试使用下面的代码但它只删除整个行,如果日期范围匹配,而不是中间的数据。 HELP?

    protected void Delete_Click(object sender, EventArgs e)
    {
        if (StartTextBox.Text == "" || EndTextBox.Text == "")
        {
            ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Please Enter a Date Range to Submit for employee.');", true);
        }
        string find = "DELETE FROM Schedule where start >= @DateTo AND end_date <= @DateFrom";

        SqlCommand cmd = new SqlCommand(find, con);
        cmd.Parameters.AddWithValue("@DateTo", SqlDbType.NVarChar).Value = StartTextBox.Text;
        cmd.Parameters.AddWithValue("@DateFrom", SqlDbType.NVarChar).Value = EndTextBox.Text;   

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

        ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Time-off submitted successfully!');", true);
    }

1 个答案:

答案 0 :(得分:2)

您正在使用nvarchar作为数据类型。 &lt;的行为和&gt;不是你期望的。

考虑将列类型更改为 datetime

之后,您可以将代码更改为:

 cmd.Parameters.AddWithValue("@DateTo", SqlDbType.DateTime).Value = DateTime.Parse(StartTextBox.Text);
 cmd.Parameters.AddWithValue("@DateFrom", SqlDbType.DateTime).Value = DateTime.Parse(EndTextBox.Text);