mysql获得空闲时间设置会议

时间:2014-12-14 13:03:08

标签: mysql sql time

Ι在MySQL中有一个表

     date  starttime    endtime 
11/2/2014   10:00:00   10:45:00
11/2/2014   10:45:00   11:15:00
11/2/2014   11:45:00   12:15:00
11/2/2014   12:15:00   13:30:00

我需要sql查询给我回复30分钟设置新会议的时间

1 个答案:

答案 0 :(得分:0)

$array_time = array();

$query = "SELECT starttime, endtime FROM table";
$result = $mysqli->query($query);

//fetch result
while ($array_time[] = $result->fetch_assoc()) {}

/*
$array_time = Array (
  ...
  1 => array('starttime' => 10:45:00, 'endtime' => 11:15:00)
  2 => array('starttime' => 11:45:00, 'endtime' => 12:15:00)
  ...
)
*/

//array of free time for your meeting
$free_time = array();

foreach($array_time as $i => $row){
  if($i > 0) {
    //if this is not the first time row

    //get this row starttime
    $this_starttime = strtotime($row['starttime']);

    //and the last endtime
    $prev_endtime = strtotime($array_time[$i-1]['endtime']);

    //get the difference
    $diff = $this_starttime - $prev_endtime;

    //if difference is more or equal than 30 minutes
    if($diff >= strtotime('30 minutes')) {
      $free_time[] = array('starttime' => $row['starttime'], $array_time[$i-1]['endtime']);
    }
  }
}

我认为你不能在MySQL查询中这样做,所以PHP可以帮助你。 希望它有效,我还没有测试过。

但是尝试通过其他方式保存您的数据,这不是那么有效,如您所见。