删除超过一天的项目 - SQL Server

kjv*_*kjv 21 sql sql-server datetime

在我的数据库的表中,我有一个datatime列,用于存储添加记录的时间.如何在运行存储过程时删除所有超过一天的记录(考虑当前时间)?

KB2*_*B22 31

您可以使用datediffgetdate函数构建DELETE语句.

用法示例:

DELETE FROM yourTable WHERE DATEDIFF(day,getdate(),thatColumn) < -1
Run Code Online (Sandbox Code Playgroud)

  • 你倒退了.根据这个问题,"thatColumn"将永远在过去,而你写这个的方式,你的DATEDIFF将永远大于0.正确的方法是:"删除你的桌面WHERE DATEDIFF(day,getdate(),thatColumn) <-1"或:"从你的桌面删除DEREIFF(day,thatColumn,getdate())> 1" (2认同)

gbn*_*gbn 29

说到SQL,你必须用"比一天更早"来指定你的意思.

  • DATEDIFF:它使用午夜边界,所以在10月19日00:05运行它你将删除6分钟的行(10月18日23:59)

  • 24小时?

  • 昨天午夜?10月19日运行代码,在18日之前删除行?

另外,不要在列上放置函数.

这假设24小时到分钟:

DELETE
    MyTableWhere
WHERE
    MyColumn < DATEADD(day, -1, GETDATE())
Run Code Online (Sandbox Code Playgroud)

这假设是昨天午夜:

DELETE
    MyTableWhere
WHERE
    MyColumn < DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), -1)
Run Code Online (Sandbox Code Playgroud)


Raj*_*Raj 5

Delete <TableName>
Where DATEDIFF(day, <ColumnName>, getdate()) > 0
Run Code Online (Sandbox Code Playgroud)

拉吉

  • 使用删除语句不需要From :) (4认同)