SQL Server删除超过10分钟的所有行

时间:2013-11-24 09:00:32

标签: sql sql-server

如何删除SQL Server中10分钟以后创建的所有行。 感谢。

4 个答案:

答案 0 :(得分:4)

假设您有一个存储时间戳的列名Date_column。您可以尝试这样,其中mi是minute的缩写:

DELETE FROM Table_name
WHERE Date_column < DATEADD(mi,-10,GETDATE())

答案 1 :(得分:1)

SQL Server无法判断该行的创建时间。您需要在表中添加一列来记录时间。如果你这样做,你的删除声明就会变得非常简单。

答案 2 :(得分:1)

在表格中添加一行,其中包含创建日期modified

创建一个更新此行的触发器

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())

请查看How to track when a row was created/updated automatically in SQL Server?

答案 3 :(得分:0)

我使用这种语法因为我觉得它很容易使用:

这确实需要一个时间戳列 - 对于任何生产系统都应该是SOP。

WHERE DATEDIFF(MINUTE, order.credat, CURRENT_TIMESTAMP) < 10