根据日期删除记录

时间:2011-09-29 21:54:39

标签: sql-server

我有一个数据库“DB”,我想删除未来的“MyRecords”表中的记录(“RecordDates”比今天更多只是为了避免系统上的日期更改)而不是x no。从今天开始。

“x”可能会有所不同。而且,我也想用月份和年份执行相同类型的命令。

我正在使用SQL Server和C#。

3 个答案:

答案 0 :(得分:4)

要删除将来以及未来n天内的记录,您可以使用T-SQL,如下所示:

    DELETE FROM DB.table WHERE 
    (date > GETDATE() AND date <  DATEADD(day, 5, GETDATE()));

在这种情况下,n为5。

您可以在DATEADD (Transact-SQL)

看到DATEADD()的所有参数

答案 1 :(得分:1)

此查询将删除所有晚于当前日期但未来不到30天的记录。您可以将“30”替换为变量,以便您可以确定将来要删除的天数。

DELETE FROM Table 
WHERE
TABDate > GETDATE() and TABDate < DATEADD(day, 30, GETDATE())

<强>更新

要删除过去少于30天的所有记录,您可以将查询更改为:

DELETE FROM Table 
WHERE
TABDate > DATEADD(day, -30, GETDATE()) AND TABDate < GETDATE()

另请注意,所有这些示例都调用GETDATE(),其中还包含时间组件和日期,因此必须注意,只要您看到< GETDATE()之类的语句,您就不仅仅是删除日期之前的记录,比如2011-09-29,您将删除所有日期为“2011-09-29 17:30”之前的记录。因此,如果表日期也包含时间,请注意。

答案 2 :(得分:-1)

您可以使用查询DELETE FROM DB.table WHERE date > now()WHERE date > unix_timestamp(),具体取决于您存储日期的方式。 (即日期时间与时间戳)。

相关问题