-2

我有一个文本框和一个按钮,我有一个包含 EmpID 和日期的数据库。所以我想根据日期而不是确切的日期删除一个 EmpId。

假设 DB 中的 EmpId=2 和 Date=02/20/2012。即使我输入 02/25/2012 或 02/01/2012 也应该能够删除它,因此如果月份和年份匹配,则应将其删除。我在文本框中输入日期。

con.Open();
try
{
    SqlCommand Delete = new SqlCommand("delete from Table2 where Date= ('" + TextBox1.Text + "')", con);
    Delete.ExecuteNonQuery();
}
catch (Exception ex)
{
    Console.writeLine("Error");
}
4

5 回答 5

2

我建议您将前端从一个文本框更改为两个控件。第一个将是文本框或下拉列表,用于提交年份。第二个是选择月份的下拉菜单。这将使您的用户更清楚地了解他们在做什么。它还消除了无效日期的问题,例如 2013-02-30。

在后端,如果你有一年零一个月,你应该可以从那里拿走它。

于 2013-02-22T14:18:53.310 回答
1

您必须在 where 子句中使用以下代码

DATE_FORMAT(Date, '%m/%Y') = compare only month and year here in mm/yyyy format.

希望这对你有用

于 2013-02-22T13:43:05.033 回答
1

一种方法是使用 SQL MONTH 和 YEAR 函数。

例如

SqlCommand Delete = new SqlCommand("delete from Table2 where MONTH(Date) = MONTH('" + TextBox1.Text + "') AND YEAR(Date) = YEAR('" + TextBox1.Text + "'), con);
于 2013-02-22T13:47:44.720 回答
1

首先,您需要将文本框转换为日期时间,如下所示

DateTime dateValue =  DateTime.ParseExact(textBox1.Text, "M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture);

从变量 dataValue 你可以得到 month 和 year 。现在使用下面的查询

SqlCommand Delete = new SqlCommand("delete from Table2 where  datepart(mm,Date) = '" + dateValue.Month + "' And datepart(year,Date) = '" + dateValue.Year + "'", con);
于 2013-02-22T14:30:15.183 回答
1

使用DateTimePikercontrol 而不是Textbox,使用以下代码:

SqlCommand Delete = new SqlCommand("delete from Table2 where Date= ('" + datetimepicker.value + "')", con);

Delete.ExecuteNonQuery();
于 2013-02-22T14:44:32.830 回答