SQL: 如何在达到unix 时间时删除一行?

SQL: How can I delete a row when a unix time is reached?

抱歉,对这东西​​了解不多!

我有一个包含几列的 table,其中一列称为 'expirationday',每一行都有该列的 unix 时间戳。

如果可能的话,我想知道如何在达到 'expirationday' 列(对于该行)中的时间时删除一行。

请注意,删除行不需要精确到秒,几个小时就可以了。

值得一看MySQL event scheduler。例如,您可以每半小时将作业安排到 运行。

然后它可以直接调用 DELETE 语句或调用 MySQL Function or Procedure.

DELIMITER $$

CREATE 
    EVENT `deleteExpire` 
    ON SCHEDULE EVERY 1 HOUR STARTS '2015-01-01 00:00:00' 
    DO BEGIN

        DELETE FROM mytable
              WHERE expirationday < UNIX_TIMESTAMP();

    END */$$

DELIMITER ;

另见 more example usage

script.sh

像这样创建一个 shell 脚本:

#!/bin/bash

mysql --user=[username] --password=[password] --database=[db name] --execute="DELETE FROM tbl_name WHERE expiration_date < NOW()

创建一个 cron 作业来执行(它将 运行 每 30 分钟)

类型

crontab -e

添加:

0,30 * * * * /path/script.sh