我试图从我的表中删除除过去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
答案 0 :(得分:1)
这应该做你想要的。你非常接近。你想要的是今天开始减去2天,如下所示。此外,您使用的是大于运算符(>)而不是小于(<),这将删除过去两天中的所有内容,但之前不会删除。
delete from myTable
where myDate < DATEADD(day, DATEDIFF(day, 0, GETDATE()), -2)
答案 1 :(得分:0)
我只是建议:
delete
from myTable
where myDate > cast(getdate() - 2 as date);
这适用于SQL Server 2008 +。