删除早于xx天的记录的mssql数据记录

时间:2017-04-03 09:14:26

标签: sql sql-server database sql-delete

我试图从我的数据库中删除记录为OLDER超过3天的所有记录。

我写过这样的话:

delete from Results WHERE [Date] > DATEADD(d, -3, getdate())

我想检查这个sql查询是否正确,因为我担心我可能会犯错并删除超过我应该...

这个查询是否正确?

2 个答案:

答案 0 :(得分:2)

您的代码删除的所有内容较新超过3天,应该是:

DELETE FROM Results WHERE [Date] < DATEADD(DAY, -3, GETDATE())

否则,这可以删除超过72小时的所有内容,尽管其他人已经说过你应该在数据副本上测试或者至少使用SELECT语句进行测试

SELECT * FROM Results WHERE [date] < DATEADD(DAY, -3, GETDATE())

但是,如果你想删除三天前发生的所有事情(例如现在是星期一,我想删除星期五之前发生的一切)你需要消除时间方面

DELETE FROM Results WHERE CONVERT(DATE, [date]) < DATEADD(DAY, -3, GETDATE())

答案 1 :(得分:1)

在更新或删除语句之前,始终检查SELECT子句中的WHERE子句:

SELECT DATEADD(d, -3, getdate())

首先检查SELECT语句中的WHERE子句。它给出了您的预期日期意味着在DELETE中继续使用相同的WHERE子句。