如何在Where子句中从mysql中的时间中减去时间


how to subtract a time from a time in mysql in Where Clause

如何从数据库中已存储的时间中减去时间

$v_id = mysqli_query($mysqli," SELECT V_ID FROM van WHERE (v_starttime -'$row4') BETWEEN -1030 AND 2040");

我有一个想法,做这件事可能是错误的方式,但给出了正确的结果,你做了

$van_id = array();

 $i=0;
while(empty($rows[$i]) === false){


  $v_id = mysqli_query($mysqli," SELECT V_ID ,v_starttime FROM van WHERE r_id = '$rows[$i]'");


      $f=0;
    while($rowb = $v_id->fetch_assoc()) {
      $ty= (strtotime($rowb['v_starttime']) - strtotime($row4))/60;

//它在这里,或者我是怎么做的!!

      if($ty>-40 && $ty<40) {
           $van_id[$f]= $rowb['V_ID'];
           mysqli_query($mysqli,"UPDATE `emp` SET `V_ID` = '$van_id[$f]' WHERE `username` = 'bla'");
          }
          $f++;
    }

  $i++;
}

我只是从数据库中提取时间进行转换,然后减去已经提取的时间也进行转换,再将整数除以60得到mintues,然后存储$van_id数组

您应该使用TO_DAYS表示天数,然后从日期中减去

 $v_id = mysqli_query($mysqli," SELECT V_ID FROM van WHERE (TO_DAYS(DATE(v_starttime)) -TO_DAYS(DATE('$row4'))) BETWEEN -1030 AND 2040");

其中$row4也是日期。

  • 了解TO_DAYS并从datetime中提取日期
  • 您可以使用TO_SECONDS来执行此操作,并执行分区60*60

     $v_id = mysqli_query($mysqli," SELECT V_ID FROM van WHERE ((TO_SECONDS(v_starttime) -TO_SECONDS('$row4'))/3600) BETWEEN -1030 AND 2040");