我有一个数据库“DB”,我想删除未来的“MyRecords”表中的记录(“RecordDates”比今天更多只是为了避免系统上的日期更改)而不是x no。从今天开始。
“x”可能会有所不同。而且,我也想用月份和年份执行相同类型的命令。
我正在使用SQL Server和C#。
答案 0 :(得分:4)
要删除将来以及未来n
天内的记录,您可以使用T-SQL,如下所示:
DELETE FROM DB.table WHERE
(date > GETDATE() AND date < DATEADD(day, 5, GETDATE()));
在这种情况下,n
为5。
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()
,具体取决于您存储日期的方式。 (即日期时间与时间戳)。