删除时间戳早于x天的所有行

Kha*_*eal 44 mysql sql-delete

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

我试过这个:

DELETE FROM on_search WHERE search_date < DATE_SUB(NOW(), INTERVAL 180 DAY);
Run Code Online (Sandbox Code Playgroud)

但是删除了所有行,而不仅仅是超过6个月的行.

我在on_search表中有一个名为search_date的列,其中包含创建该行的时间.

search_id   search_term    search_date 
660779      car games      1390052553 
Run Code Online (Sandbox Code Playgroud)

JSR*_*JSR 66

DELETE FROM on_search 
WHERE search_date < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 180 DAY))
Run Code Online (Sandbox Code Playgroud)


Ali*_*our 55

DELETE FROM on_search WHERE search_date < NOW() - INTERVAL N DAY
Run Code Online (Sandbox Code Playgroud)

将N替换为您的日数

  • 使用datetime列可以很好地工作。没有要求的时间戳。 (4认同)
  • 尽管删除了今天创建的图章,但仍删除了所有行。 (2认同)