【问题标题】:delete fields from sql database where the date is a previous date to today in c#在c#中从sql数据库中删除日期是前一个日期到今天的字段
【发布时间】:2018-09-16 13:09:14
【问题描述】:
SqlConnection sqlcon = new SqlConnection(GlobalClass.DBLocate);
sqlcon.Open();

string query = "Delete from [Plans] Where Date < '" + 
GlobalClass.Date.ToShortDateString() + "'";

SqlDataAdapter sda = new SqlDataAdapter(query, sqlcon);

sda.SelectCommand.ExecuteNonQuery();

我已经尝试了很多技术,但是这个数据库中的所有内容都被删除或者什么都没有。 非常感谢

【问题讨论】:

标签: c# sql date sql-delete delete-row


【解决方案1】:

与其将日期作为字符串传递,不如使用它的原生日期函数编写 SQL?

由于这个问题被标记为 C# 并且没有任何特定的 SQL 风格,因此我正在编写此连接到 SQL Server。 您也没有为要从中删除的表提供 DDL。该代码基于为 [Date] 列使用适当的列类型,这将是 DateTime 的一些变体。

以下语句应该删除当前日期时间之前的所有内容

string query = "DELETE from [Plans] WHERE Date < GetDate()";

如果您需要对今天之前的所有内容进行微调,那么您可以使用 CAST/CONVERT 并获取日期部分:

string query = "DELETE from [Plans] WHERE Date < Cast(GetDate() as Date)";

您也不需要为非查询使用 DataAdapter;它的返回类型是int,可以直接赋值

int RowsDeleted = cmd.ExecuteNonQuery();

所以把它们放在一起,我们就得到了这个代码块。我还包裹在 using 块中,以便之后正确清理资源。

int RowsDeleted = -1;

using (SqlConnection sqlcon = new SqlConnection(GlobalClass.DBLocate)) {
    string query = "DELETE from [Plans] WHERE Date < GetDate()";
    SqlCommand cmd = new SqlCommand(query, sqlcon);

    sqlcon.Open();
    RowsDeleted = cmd.ExecuteNonQuery();
    sqlcon.Close();
}

【讨论】:

    【解决方案2】:

    试试这个。我猜你的日期值是新的,因此会删除所有内容。

    SqlConnection sqlcon = new SqlConnection(GlobalClass.DBLocate);
    sqlcon.Open();
    
    DateTime yesterday = DateTime.Today.AddDays(-1);
    
    string query = "Delete from [Plans] Where Date <= '" + 
    yesterday.ToShortDateString() + "'";
    
    SqlDataAdapter sda = new SqlDataAdapter(query, sqlcon);
    
    sda.SelectCommand.ExecuteNonQuery();
    

    【讨论】:

    • 此代码仍在删除日期为 20/04/2018 等日期的日期行
    • 在你尝试在 c# 中做同样的事情之前,你能构造一个做正确事情的 sql 吗?然后比较一下,看看有什么区别?
    • query = "从日期
    • 没有@TommyLydon。阅读stackoverflow.com/questions/9121332/…
    • @mjwills 我还是不能让它工作,我应该写什么?
    猜你喜欢
    • 1970-01-01
    • 2023-01-19
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多