sql delete语句,其中日期大于30天

Ale*_*lex 46 sql-server date-arithmetic

我希望找到一个SQL语句,在执行时删除超过30天的字段.

我的表"events"有一个字段"date",其中包含在数据库中插入的日期和时间.

我现在不在家,所以我无法测试.这个好吗 ?

SELECT * from Results WHERE [Date] >= DATEADD(d, -30, getdate())
Run Code Online (Sandbox Code Playgroud)

Col*_*kay 101

在WHERE子句中使用DATEADD:

...
WHERE date < DATEADD(day, -30, GETDATE())
Run Code Online (Sandbox Code Playgroud)

您也可以使用缩写ddd代替day.

  • 功能fu_dev.DATEADD不存在.为什么我会收到此错误?fu_dev是我的数据库. (2认同)

Vik*_*han 11

你也可以使用

SELECT * from Results WHERE date < NOW() - INTERVAL 30 DAY;
Run Code Online (Sandbox Code Playgroud)


Jam*_*man 8

虽然这DATEADD可能是最透明的方式,但值得注意的是,这getdate()-30也足够了.

此外,您是否在寻找30天后,包括小时,分钟,秒等?或者从今天午夜起30天(例如12/06/2010 00:00:00.000).在这种情况下,您可以考虑:

SELECT * 
FROM Results 
WHERE convert(varchar(8), [Date], 112) >= convert(varchar(8), getdate(), 112)
Run Code Online (Sandbox Code Playgroud)


Ray*_*ren 8

要从表中删除 Date_column 中日期时间值早于 30 天的记录,请使用以下查询:

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < GETDATE() - 30
Run Code Online (Sandbox Code Playgroud)

...或这个:

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(dd,-30,GETDATE())
Run Code Online (Sandbox Code Playgroud)

要从表中删除 Date_column 中日期时间值早于 12 小时的记录:

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(hh,-12,GETDATE())
Run Code Online (Sandbox Code Playgroud)

要从表中删除 Date_column 中日期时间值早于 15 分钟的记录:

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(mi,-15,GETDATE())
Run Code Online (Sandbox Code Playgroud)

来自:http://zarez.net/?p=542