首页 > 解决方案 > 有没有办法在一段时间后从表中动态删除一行?

问题描述

从正在创建的行开始 12 小时后,我试图从我的表中删除一行。

我的表中有一个 dateTime 列,它记录了它的创建时间,有没有办法在 12 小时后动态删除一行?这产生的另一个问题是日期可能会在 12 小时内发生变化,这可能会使行的时间戳变得无关紧要。

尽管我不知道如何处理问题的日期更改方面,但我尝试从我在类似问题上找到的示例中执行一些简单的 SQL 查询。

示例查询:

DELETE FROM detail1 WHERE date < DATETIME('NOW', '-1 hours');

这是我的桌子:


ID   |Position|  dateApplied    
 1   |  1     |  2019-07-20 05:23:16
 2   |  2     |  2017-07-20 12:13:30 

我想找到一个查询来帮助我在 12 小时后删除每一行。

标签: phpmysql

解决方案


您应该创建一个脚本并使用Cron Jobs定期调用它,在该脚本中检查所有行并删除过期的行。如果您在表格中保存“到期时间”会更容易:

$expireAfter = time() + (12 * 60 * 60); // time returns number of seconds since the Unix Epoch

然后在周期性脚本中,您可以检查该行是否过期:

$now = time();
$queryString = "DELETE FROM detail1 WHERE `expiry_time` < $now;";

使用这种方法,您无需担心更改日期。


推荐阅读