簡體   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