使用SQL删除除最近2天之外的所有数据

时间:2015-03-06 17:10:29

标签: sql sql-server tsql

我试图从我的表中删除除过去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 个答案:

答案 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 +。