【发布时间】:2016-11-30 16:38:33
【问题描述】:
我正在尝试编写 2 个查询来删除日期大于某个日期的记录:
第一个:
delete from RPT_HistSnapEng_temp
where ForecastDate> DATEADD(WEEK,7,CAST(GETDATE() AS DATE))
当 forecastdate 距离今天超过 7 周时,此查询将删除记录
第二个是:
delete from RPT_HistSnapEng_temp
where ForecastDate< DATEADD(WEEK,-6,CAST(GETDATE() AS DATE))
当 forecastdate 距离今天不到 6 周时,此查询将删除记录。
所以基本上,这应该会过滤掉 2015 年 12 月至 2016 年 11 月的记录,只显示前 6 周和从今天起接下来的 7 周的记录。
即使查询运行,它也不会删除记录。我无法对日期进行硬编码,因为我将在 SSIS 包中滚动使用此查询。
【问题讨论】:
-
要删除多少条记录?它是在运行而不是完成,还是在运行和完成而不删除任何内容?
-
在查询之前是否已提交更改?
-
因此查询运行得非常快(在 5-15 秒内)并显示“0 行受影响”。表中大约有 4-5m 条记录。但是当我在预测日期上进行选择时,我可以看到全年的日期。
-
如果您运行与 select 相同的查询,它是否返回行?
-
返回 0 行。从 RPT_HistSnapEng_temp 中选择 COUNT (*),其中 ForecastDate
标签: sql sql-server sql-server-2008 date range