Pdo删除x天以上的行

时间:2016-11-30 04:25:51

标签: php pdo

我想设置一个cron作业,它会删除5天以上我在英国的行,但是我的服务器上设置了不同的时间/日期,所以当我拉它时会返回错误的日期所以在我的剧本中,我将宗教设定为我的,这是迄今为止我所拥有的

  date_default_timezone_set('Europe/London');
$sTime = date("d-m-Y");  
$sql = "DELETE FROM application_running WHERE date < NOW() - INTERVAL 5 DAY";
$stmt = $db->prepare($sql);
$stmt->execute();

这删除了所有结果,无论它们多大了,我也试图像这样编辑日期

  date_default_timezone_set('Europe/London');
$sTime = date("d-m-Y");  
$sql = "DELETE FROM application_running WHERE date < date(d-m-Y) - INTERVAL 5 DAY";
$stmt = $db->prepare($sql);
$stmt->execute();

再次无效。

结果在数据库中看起来像01-11-2016所以只需删除比$ sTime早5天的所有行

1 个答案:

答案 0 :(得分:1)

您可以使用php中的DateTime类

// create date with your timezone
$date = new \DateTime('now', new \DateTimeZone('Europe/London'));
// remove 5 days
$date->sub(new DateInterval('P5D'));  

$sql = "DELETE FROM application_running WHERE date < '{$date->format('d-m-Y')}' ";
$stmt = $db->prepare($sql);
$stmt->execute();

请参阅:

http://php.net/manual/en/class.datetime.php

http://php.net/manual/en/datetime.sub.php

http://php.net/manual/en/class.datetimezone.php