删除从上一个午夜起的记录(以午夜为界)

后端开发 2026-07-12

目前我这样删除记录:

DELETE FROM users WHERE DATE_SUB(CURDATE(),INTERVAL 1 DAY)>=last_login

last_login = DATETIME字段

这会在24小时后删除记录,但实际上应在当天结束的午夜删除。

因此无论何时登录,都应在一天结束时删除该记录。

有什么想法?

解决方案

最佳做法是 以今天午夜作为边界

DELETE FROM users
WHERE last_login < CURDATE();

建立索引:

CREATE INDEX idx_users_last_login ON users(last_login);

使用每天在00:01及以后运行的cron。

mysql -e "DELETE FROM users WHERE last_login < CURDATE();" mydb

或者使用 MySQL事件调度器

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章