如何删除超过一年的所有过期行?

时间:2016-07-01 18:34:45

标签: mysql sql

我有一张这样的表:

// cookies
+---------+-------------------------+------------------+------------+
|   id    |         email           |     cookie       | date_time  |
+---------+-------------------------+------------------+------------+
| int(11) |      varchar(50)        |   varchar(128)   |  int(11)   |
+---------+-------------------------+------------------+------------+
| 1       | jack_2009@gmail.com     | ojer0f934mf2...  | 1467204523 |
| 2       | peter.zm@yahoo.com      | ko4398f43043...  | 1467205521 |
| 3       | matrix_john23@gmail.com | 34fjkg3j438t...  | 1467205601 |
| 4       | peter.zm@yahoo.com      | 0243hfd348i4...  | 1467206039 |
+---------+-------------------------+------------------+------------+

我试图删除所有已过期的行。过期表示所有旧行。旧行表示超过一年的每一行。

DELETE FROM cookies WHERE date_time < unix_timestamp() - (60 * 60 * 24 * 365) 

但我的查询对我来说似乎不正常。有没有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以在1年后使用date_SUB interv

 DELETE FROM cookies WHERE  date_time < unix_timestamp(DATE_SUB(now(),INTERVAL 1 year))