删除数据库上的字符串日期

时间:2016-11-19 10:07:43

标签: php mysql database sql-delete

我有一个包含三列(id,datetime和name_date)的表(db_dates)。

我希望在日期结束时删除一行,例如:

//select string time from database
$selectTime ="SELECT datetime FROM db_dates";
$timeSelect = mysqli_query($con,$selectTime);

//today 
$today = date('Y-m-d H:i');
printf ("today: %s \n",$today);

//get one date from database    
while($rowTime = mysqli_fetch_row($timeSelect)){    
  $date = new DateTime($rowTime[0]);
  $t = $date->format('Y-m-d H:i');
  printf ("date: %s \n",$t);    

  //delete this row, when the date is over 
  mysqli_query($con, "DELETE FROM db_dates WHERE '".$rowTime[0]."' < '".$today."'");
}

不工作,我该怎么办?它总是删除所有数据!

1 个答案:

答案 0 :(得分:0)

我认为这会对您有所帮助。

因为根据您的代码日期,日期将始终少于您今天的日期。

因此,您应该使用DATEDIFF()尝试以下代码。

//select string time from database
$selectTime ="SELECT datetime FROM db_dates";
$timeSelect = mysqli_query($con,$selectTime);

//today 
$today = date('Y-m-d H:i');
printf ("today: %s \n",$today);

//get one date from database    
while($rowTime = mysqli_fetch_row($timeSelect)){    
  $date = new DateTime($rowTime[0]);
  $t = $date->format('Y-m-d H:i');
  printf ("date: %s \n",$t);    
  //delete this row, when the date is over 
  mysqli_query($con, "DELETE FROM db_dates WHERE DATEDIFF('".$rowTime[0]."', NOW()) < 0");
}