我正在尝试创建一个计划页面,员工可以在其中插入休假时间,并删除该特定日期范围的数据。
我有两个日期范围的文本框,我尝试使用下面的代码但它只删除整个行,如果日期范围匹配,而不是中间的数据。 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);
}
答案 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);