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();
我尝试了很多技术但是这个数据库中的所有内容都被删除了或者根本没有。 非常感谢
答案 0 :(得分:0)
不是将日期作为字符串传递,为什么不使用它的本机日期函数编写SQL?
由于这个问题被标记为C#而没有任何特定的SQL风格,我正在写这个连接到SQL Server。 您还没有为要删除的表提供DDL。该代码基于为[Date]列使用适当的列类型,这将是DateTime的一些变体。
以下语句应该删除当前DateTime的所有内容
[ 0. 0.]
如果您需要在今天之前对此进行微调,那么您可以使用 CAST / CONVERT 并获取日期部分:
string query = "DELETE from [Plans] WHERE Date < GetDate()";
您也不需要将DataAdapter用于NonQuery;它的返回类型是 int ,可以直接进行
string query = "DELETE from [Plans] WHERE Date < Cast(GetDate() as Date)";
所以把它们放在一起,我们得到了这个代码块。我还包含在使用块中,以便之后可以正确清理资源。
int RowsDeleted = cmd.ExecuteNonQuery();
答案 1 :(得分:-1)
试试这个。我猜你的日期值是新的,因此删除所有内容。
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();