在php中删除1周后的日期

时间:2015-02-26 11:40:48

标签: php datetime

自从我在这里发布以来,我做了很多编码而不必问,但我被卡住了:(

我有一个名为“$ date”的变量,它始终是当前日期。现在我有日志设置为日期,现在我要做的是从当前日期删除任何超过一周的日志。这就是我的做法(?意味着我不知道该放什么)。

$date = date('Y-m-d H:i:s');

$one_week_old = $date - ?;

$clearlog = mysqli_query($con,"DELETE FROM logs WHERE logs.date < '$one_week_old'");

6 个答案:

答案 0 :(得分:2)

您可以直接查询它,而不是使用其他变量:

$clearlog = mysqli_query($con,"DELETE FROM logs WHERE logs.date < dateadd(week,-1,getdate()));

答案 1 :(得分:1)

$one_week_old = date('d-m-Y', strtotime("-1 week"));

答案 2 :(得分:1)

你可以这样做:

$one_week_old = date("Y-m-d",strtotime("-1 week"));

答案 3 :(得分:1)

如果您稍后在PHP中不需要此日期信息,我建议您直接在MySql查询中执行此操作。请考虑,此示例将仅修改datepart,而不是当前时间戳的时间部分。没有确切地说明你是想删除整天还是那些早于604800秒(7 x 24 x 60 x 60 = 604800)的数据。

MySQL 5.5 Reference Manual 12.7 Date and Time Functions

mysqli_query($con, "DELETE FROM logs WHERE logs.date < DATE_SUB(NOW(), INTERVAL 1 WEEK)");

答案 4 :(得分:1)

$date = date('Y-m-d');
$newdate = strtotime ( '-1 week' , strtotime ( $date ) ) ;
$newdate = date ( 'Y-m-d' , $newdate );
$query="DELETE FROM logs WHERE logs.date < '".$newdate." 00:00:00 '";
$clearlog = mysqli_query($con,$query);

答案 5 :(得分:0)

如果您更喜欢Oriented Object范例,我们有:

$oneWeekAgo = (new DateTime('-1 week'))->format('d/m/Y');

说明:

  • 返回一个新的DateTimeObject
  • 将时间戳设置为-1周
  • 根据您的需要进行格式化。