首页 > 解决方案 > 从 MYSQL 中删除超过 X 天的数据,Unix 时间以毫秒为单位

问题描述

我想从我的数据库中的特定表中删除时间戳超过 180 天的所有行。

我试过这个:

DELETE FROM on_search 
WHERE time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));

但时间是 13 位 unix 格式,如 1543821263977

标签: mysqlsqltimeunix-timestamp

解决方案


UNIX_TIMESTAMP(NOW())

以秒为单位返回时间。

您必须将其乘以 1000 才能使其变为 13 位(以毫秒为单位的时间)。

DELETE FROM on_search 
WHERE time < UNIX_TIMESTAMP(DATE_SUB(NOW(3), INTERVAL 30 DAY))*1000;

推荐阅读