繁体   English   中英

MySQL 根据 unix 纪元时间戳删除记录

[英]MySQL delete a record based on unix epoch timestamp

我有一个 MySQL 表如下:

+----------+---------------------+-----------------+---------------+
| id       | firstName           | lastName        | tstamp        |
+----------+---------------------+-----------------+---------------+
| 133      | James               | Mosher          | 1593612000000 |  
| 145      | Bill                | Turner          | 1593698400000 | 
| 146      | Jeremy              | Vine            | 1593784800000 |  
| 152      | Ramon               | Jesus           | 1593180000000 |
+----------+---------------------+-----------------+---------------+

并且我希望能够根据tstamp值(这是纪元 unix 时间)删除记录,如果它们比x days 我正在使用下面的查询,它应该删除最后一行(Ramon Jesus),因为它超过 5 天......但是,它删除了所有记录。 知道我做错了什么吗?

DELETE FROM students WHERE tstamp > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 DAY));

您的时间戳包含在比较之前必须删除的毫秒,因为UNIX_TIMESTAMP()返回的DATETIME值没有毫秒。
此外,比较必须使用相反的不等式运算符:

DELETE FROM students 
WHERE tstamp / 1000 < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 DAY));

演示
结果:

| id  | firstName | lastName | tstamp        |
| --- | --------- | -------- | ------------- |
| 133 | James     | Mosher   | 1593612000000 |
| 145 | Bill      | Turner   | 1593698400000 |
| 146 | Jeremy    | Vine     | 1593784800000 |

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM