PHP删除超过3天的MySQL记录


PHP Delete MySQL Records Older Than 3 Days

我在每个页面的顶部都有以下内容,因此当任何人加载网站时,PHP都会删除特定数据库表中超过3天的任何记录。

$conn = getConnected("oversizeBoard");
mysqli_query($conn, "DELETE FROM postedLoads WHERE date < DATE_SUB(DATE('m-d-Y'), INTERVAL 3 DAY");

问题是没有删除任何内容。

我的日期列的数据类型是varchar(20),当我将日期插入MySQL时,它是使用date("m-d-Y")输入的。我的日期字段的名称是date。因此,上面的查询似乎是正确的,但我做错了什么,我不确定是什么,因为我看过的每个例子基本上都是一样的,只是它们使用了now()而不是date(),但我使用了特定的日期格式,所以我不能在查询中使用now()

我做错了什么?

我甚至试着把它放进一个函数中:

function deleteOversizeRows() {
$conn = getConnected("oversizeBoard");
mysqli_query($conn, "DELETE FROM postedLoads WHERE date < DATE_SUB(DATE('m-d-Y'), INTERVAL 3 DAY");
}
deleteOversizeRows();

尝试先通过计算提供日期,然后在下面的中使用它

$date = date("m-d-Y", strtotime('-3 day'));
$conn = getConnected("oversizeBoard");
mysqli_query($conn, "DELETE FROM postedLoads WHERE date < '".$date."');

它可能会对你有所帮助。如果需要任何其他解决方案或帮助,请在此处咨询。

使用MySQL函数TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2);

函数计算两个日期之间的差值,并根据传递的单位参数返回输出。

试试这个:

DELETE FROM postedLoads WHERE TIMESTAMPDIFF('DAY',date,now())<3;

有关功能的详细信息:http://www.w3resource.com/mysql/date-and-time-functions/mysql-timestampdiff-function.php