我有一个查询,将一年前的行从一个表移动到一个相同的“存档”表。
有时,无效日期被输入到dateprocessed
列中(用于评估该行是否超过一年),并且查询出错。我想基本上“筛选”坏行——即where not isdate(dateprocessed)
不等于 1——以便查询不会尝试归档它们。
我对如何做到这一点有一些想法,但希望以最简单的方式做到这一点。如果我在存储过程中将好的数据选择到临时表中,然后将其与实时表内部连接,然后从实时输出运行删除以存档 - 它将从基础实时表中删除还是从新连接表中删除?
有一个更好的方法吗?谢谢您的帮助。我是一个玩 DBA 的 .NET 程序员,但我真的很想正确地做到这一点。
dateprocessed
以下是在某些列值无效时出错的查询:
delete from live
output deleted.* into archive
where isdate(dateprocessed) = 1
and cast (dateprocessed as datetime) < dateadd(year, -1, getdate())
and not exists (select * from archive where live.id = archive.id)