我试图从我的数据库中删除记录为OLDER超过3天的所有记录。
我写过这样的话:
delete from Results WHERE [Date] > DATEADD(d, -3, getdate())
我想检查这个sql查询是否正确,因为我担心我可能会犯错并删除超过我应该...
这个查询是否正确?
答案 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子句。