使用 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+。