在数据库中计算时间

时间:2014-10-16 15:42:36

标签: php database mysqli

我有一个包含列[id, Boat, Stop, Time_D]的数据库,其中Boat是船的类型,Stop是停靠号,Time_D是船的出发时间。 到目前为止,所有数据库都非常流畅,我插入了几个采样时间和船只停止1。

但我现在想用这些时间插入停止2的时间,因为Time_D (stop1)Time_D (stop2)的差异是10分钟。

我当然不希望再次手动输入停止1的(很多)出发时间,我想我可以做得更聪明。

那些新的时间可以放在同一张桌子上,低于第1站的时间,或者在一个单独的表格中(当然我不再需要列stop),我不会&#39 ;真的很在意它是如何运作的。

到目前为止,我使用过MySQLi和PHP,我希望这也适用于此。

1 个答案:

答案 0 :(得分:0)

我自己想出来了,看看代码中的评论。

$time_difference=600; //time difference in departure times between the two stops
$stop_old = "1"; //stop from which to use the times to calculate the next times
$stop_new = "2"; //the new stop


//get times from stop in array
$result = mysqli_query($con,"SELECT `Boat`, `Time_D` from `Schedule` where `Stop` = '".$stop_old."' ");
//get database result
while ($row = mysqli_fetch_array($result) ) {                         
$rows[] = $row['Time_D']; //store all the times in one array
$boats[] = $row['Boat']; // store all the boats in one array
}
//print_r ($rows); //used for debugging
//Iterate over the array to change all the elements
for($i = 0; $i < sizeof($rows); $i++){
$rows[$i] = ( strtotime($rows[$i]) ) + ($time_difference); //with timestamps, because, well, php and times...
$rows[$i] = date('H:i:s', ($rows[$i]) ); // back from timestamp to time
}
//print_r($rows);
//print_r($boats);

for($i = 0; $i < sizeof($rows); $i++){
    mysqli_query($con, "INSERT INTO `Schedule`(`Boat`, `stop`, `Time_D`) VALUES ('$boats[$i]', '".$stop_new."', '$rows[$i]')");
}