删除早于 xx 天的记录的 mssql 数据记录
Dropping mssql data records for records older than xx days
我正在尝试从我的数据库中删除所有超过 3 天的记录。
我写过这样的东西:
delete from Results WHERE [Date] > DATEADD(d, -3, getdate())
我想检查这个 sql 查询是否正确,因为我担心我可能会犯错误并删除超出我应该删除的内容...
这个查询正确吗?
总是在更新或删除语句之前检查 SELECT 子句中的 WHERE 子句:
SELECT DATEADD(d, -3, getdate())
首先检查 SELECT 中的 WHERE 子句 statement.It 给出您的预期日期意味着在 DELETE 中继续使用相同的 WHERE 子句。
您的代码正在删除所有 比 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())
我正在尝试从我的数据库中删除所有超过 3 天的记录。
我写过这样的东西:
delete from Results WHERE [Date] > DATEADD(d, -3, getdate())
我想检查这个 sql 查询是否正确,因为我担心我可能会犯错误并删除超出我应该删除的内容...
这个查询正确吗?
总是在更新或删除语句之前检查 SELECT 子句中的 WHERE 子句:
SELECT DATEADD(d, -3, getdate())
首先检查 SELECT 中的 WHERE 子句 statement.It 给出您的预期日期意味着在 DELETE 中继续使用相同的 WHERE 子句。
您的代码正在删除所有 比 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())