我需要一条 SQL 语句来删除超过 30 天的行。
我的表events
有一个字段date
,其中包含插入数据库的日期和时间。
这行得通吗?
SELECT * from Results WHERE [Date] >= DATEADD(d, -30, getdate())
我需要一条 SQL 语句来删除超过 30 天的行。
我的表events
有一个字段date
,其中包含插入数据库的日期和时间。
这行得通吗?
SELECT * from Results WHERE [Date] >= DATEADD(d, -30, getdate())
你也可以使用
SELECT * from Results WHERE date < NOW() - INTERVAL 30 DAY;
虽然这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)
要从表中删除 Date_column 中日期时间值超过 30 天的记录,请使用以下查询:
USE Database_name;
DELETE FROM Table_name
WHERE Date_column < GETDATE() - 30
...或这个:
USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(dd,-30,GETDATE())
要从表中删除 Date_column 中日期时间值超过 12 小时的记录:
USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(hh,-12,GETDATE())
要从表中删除 Date_column 中日期时间值超过 15 分钟的记录:
USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(mi,-15,GETDATE())
来自:http: //zarez.net/ ?p=542
您还可以在两个日期之间设置:
Delete From tblAudit
WHERE Date_dat < DATEADD(day, -360, GETDATE())
GO
Delete From tblAudit
WHERE Date_dat > DATEADD(day, -60, GETDATE())
GO
我们可以使用这个:
DELETE FROM table_name WHERE date_column <
CAST(CONVERT(char(8), (DATEADD(day,-30,GETDATE())), 112) AS datetime)
但更好的选择是使用:
DELETE FROM table_name WHERE DATEDIFF(dd, date_column, GETDATE()) > 30
前者是不可搜索的(即在表达式右侧的函数,因此它不能使用索引)并且需要 30 秒,后者是可搜索的并且花费不到一秒。
与其转换为 varchar 来获取日期(convert(varchar(8), [Date], 112)),我更喜欢将其保留为 datetime 字段并仅将其设为日期(没有时间)。
SELECT * FROM Results
WHERE CONVERT(date, [Date]) >= CONVERT(date, GETDATE())
GETDATE()
使用 mySQL 8 对我不起作用
错误 1305 (42000):函数 mydatabase.GETDATE 不存在
但这确实:
DELETE FROM table_name WHERE date_column < CURRENT_DATE - 30;
删除超过 30 天的行。
SELECT * FROM TABLE_NAME where timestampString <= now() - interval 30 DAY;