如何删除SQL Server中10分钟以后创建的所有行。 感谢。
答案 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