SQL Server删除超过10分钟的所有行
如何删除SQL Server中创建时间超过10分钟的所有行。SQL Server删除超过10分钟的所有行,sql,sql-server,Sql,Sql Server,如何删除SQL Server中创建时间超过10分钟的所有行。 谢谢。SQL Server无法确定行是在什么时候创建的。您需要在表中有一个额外的列来记录时间。如果这样做,delete语句将变得相当直接。假设您有一个存储时间戳的列名Date\u列。您可以这样尝试,其中mi是minute的缩写: DELETE FROM Table_name WHERE Date_column < DATEADD(mi,-10,GETDATE()) 从表中删除\u名称 其中Date\u列
谢谢。SQL Server无法确定行是在什么时候创建的。您需要在表中有一个额外的列来记录时间。如果这样做,delete语句将变得相当直接。假设您有一个存储时间戳的列名Date\u列。您可以这样尝试,其中mi是minute的缩写:
DELETE FROM Table_name
WHERE Date_column < DATEADD(mi,-10,GETDATE())
从表中删除\u名称
其中Date\u列
在表中添加一行,该行保存创建日期修改日期
创建更新此行的触发器
CREATE TRIGGER dbo.trigger_table_update
ON dbo.MyTable AFTER UPDATE
AS BEGIN
UPDATE dbo.MyTable SET modified = GETDATE()
FROM INSERTED i
WHERE dbo.MyTable.ID = i.ID
END
现在你可以删除了
DELETE FROM MyTable
WHERE modified < DATEADD(mm,-10,GETDATE())
从MyTable中删除
其中修改
请查看我之所以使用此语法,是因为我发现它很容易使用: 这确实需要有一列时间戳,这应该是任何生产系统的SOP
WHERE DATEDIFF(MINUTE, order.credat, CURRENT_TIMESTAMP) < 10
其中DATEDIFF(分钟,order.credat,当前时间戳)<10
让我猜猜:您的表中没有创建列?我只是好奇:创建列的时间从何而来?他错误地认为OP的表中有该列table@Trinimon:-我假设OP一定有一列来存储时间戳。@Rahul:非常乐观的假设-他真的会要求这个,如果他有的话?;)使用ORACLE,他本可以使用flashback表——或多或少是成功的……事实上,是的,我有这个专栏,这是我第一次,也可能是最后一次接触SQL:),这就是我问的原因