MySQL Query用于删除时间戳早于当前时间戳的行

Ari*_*ant 7 mysql delete-row

我正在寻找能够从数据库中的表中删除所有行的查询,其中时间戳早于当前日期/时间或当前时间戳.

非常感谢一些急需的帮助!

这是我正在使用的查询,但我认为它不起作用:

delete from events where timestamp<CURRENT_TIMESTAMP{);
Run Code Online (Sandbox Code Playgroud)

小智 24

嗯......这可能看起来很愚蠢,但表中的每条记录都会比Now()旧,因为Now()是在处理查询时计算的.如果要删除比其他记录旧的记录,则不希望使用Now(),而是使用记录中的时间戳来比较其余记录.或者,如果要删除早于特定时间点的记录,则需要计算要用于比较的时间戳.例如,要删除超过10分钟的记录,您可以使用:

DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 10 MINUTE)
Run Code Online (Sandbox Code Playgroud)

或者,要删除超过一天的记录:

DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 1 DAY)
Run Code Online (Sandbox Code Playgroud)

对于特定的时间点(例如,2012年10月12日格林尼治标准时间下午4:15:00),有一种方法可以做到这一点,但语法现在让我失望了.我的MySQL手册在哪里?:)

  • 如果您使用数字PHP时间戳,则需要此额外函数`UNIX_TIMESTAMP(NOW() - INTERVAL 1年);` (2认同)

Łuk*_*iak 9

delete from events where timestamp < NOW()
Run Code Online (Sandbox Code Playgroud)

应该够了.