使用 SQL 删除除最近 2 天以外的所有数据
Delete all data except for the last 2 days using SQL
我正在尝试从我的 table 中删除除最近 2 天之外的所有数据;也删除了今天的数据。
delete from myTable where myDate > DATEADD(day, DATEDIFF(day, -2, GETDATE()), -2)
这对我不起作用
样本数据
2015-03-06 18:00:00.000
2015-03-06 18:30:00.000
2015-03-06 19:00:00.000
2015-03-06 19:30:00.000
2015-03-06 20:00:00.000
2015-03-06 20:30:00.000
2015-03-06 21:00:00.000
2015-03-06 21:30:00.000
2015-03-06 22:00:00.000
2015-03-06 22:30:00.000
2015-03-06 23:00:00.000
2015-03-06 23:30:00.000
2015-03-05 00:00:00.000
2015-03-05 00:30:00.000
这应该可以满足您的要求。你非常接近。你想要的是今天的开始减去 2 天,如下所示。此外,您使用的是大于运算符 (>) 而不是小于 (<),这样会删除过去两天的所有内容,但之前不会。
delete from myTable
where myDate < DATEADD(day, DATEDIFF(day, 0, GETDATE()), -2)
我只想推荐:
delete
from myTable
where myDate > cast(getdate() - 2 as date);
这将适用于 SQL Server 2008+。
我正在尝试从我的 table 中删除除最近 2 天之外的所有数据;也删除了今天的数据。
delete from myTable where myDate > DATEADD(day, DATEDIFF(day, -2, GETDATE()), -2)
这对我不起作用 样本数据
2015-03-06 18:00:00.000
2015-03-06 18:30:00.000
2015-03-06 19:00:00.000
2015-03-06 19:30:00.000
2015-03-06 20:00:00.000
2015-03-06 20:30:00.000
2015-03-06 21:00:00.000
2015-03-06 21:30:00.000
2015-03-06 22:00:00.000
2015-03-06 22:30:00.000
2015-03-06 23:00:00.000
2015-03-06 23:30:00.000
2015-03-05 00:00:00.000
2015-03-05 00:30:00.000
这应该可以满足您的要求。你非常接近。你想要的是今天的开始减去 2 天,如下所示。此外,您使用的是大于运算符 (>) 而不是小于 (<),这样会删除过去两天的所有内容,但之前不会。
delete from myTable
where myDate < DATEADD(day, DATEDIFF(day, 0, GETDATE()), -2)
我只想推荐:
delete
from myTable
where myDate > cast(getdate() - 2 as date);
这将适用于 SQL Server 2008+。