[英]MySQL delete entries based on last two digits of Unix/Epoch time
[英]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.