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 ;
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
抱歉,对这东西了解不多!
我有一个包含几列的 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 ;
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