为什么我的MySQL查询在午夜后出现time()故障?

时间:2013-10-28 21:39:23

标签: php mysql

我的查询影响了两个表。这些表名为 flightSched &的变更即可。在两个表中, arrivalTime 列的类型为TIME。

查询运行正常,直到 $ CurrentTimePlus4Hours 变量在午夜过去。发生这种情况时,查询不会产生任何记录,尽管该表的数据范围是白天和黑夜的所有时间。在下面找到我的代码。

$currentDay = date('l');
$CurrentTimeMinus30min = date('H:i:s', strtotime('-30 minutes'));
$CurrentTimePlus4Hours = date('H:i:s', strtotime('+240 minutes'));

$query2  = "SELECT * FROM flightSched WHERE don = '$currentDay' 
                 AND depOrArriv='Arrival' 
                 AND arrivalTime BETWEEN '$CurrentTimeMinus30min' AND '$CurrentTimePlus4Hours'
                 ORDER BY arrivalTime ASC ;";

$query2 .= "SELECT * FROM Alteration WHERE don = '$currentDay' 
                 AND depOrArriv='Arrival'
                 AND arrivalTime BETWEEN '$CurrentTimeMinus30min' AND '$CurrentTimePlus4Hours'
                 ORDER BY arrivalTime ASC ;";

/* execute multi query */
if ($mysqli->multi_query($query2)) {

        do
        {
                if ($result = $mysqli->store_result()) {
                  while ($row = $result->fetch_array()) {
        echo "<tr " . $variable . "><td>"; 
        echo '<img src="php/displayImage.php?id=' . $row['id'] . ' "align="middle" width="110" height="35" >' . "&nbsp;&nbsp;&nbsp;  "
             . $row['flightNo'] ;
        $flightNo = $row['flightNo'];
        echo "</td><td>"; 
        echo $row['airline'];
        echo "</td><td>"; 
        echo $row['origin'];
        echo "</td><td>"; 
        echo $row['arrivalTime'];
        echo "</td><td>"; 
        echo $row['status'];
        echo "</td></tr>"; 

        if ($variable == 'id=basicBoard')
        {
        $variable = 'class=alt';
        //echo $variable;
        } 
    elseif ($variable == 'class=alt')
        {
        $variable = 'id=basicBoard';
        //echo $variable;
        } 
                  }
                  $result->free();
               }
               /* print divider */
               if ($mysqli->more_results()) {
            //    printf("-----------------</br>");
               }

        }
        while (@$mysqli->next_result());
echo "</table> <br/> <br/>";

}

我试图弄清楚为什么会发生这种情况但未能解决问题。有人可以指出我在代码中出错了吗?

1 个答案:

答案 0 :(得分:0)

我认为您只需要通过抵消“当前”日期来补偿时间间隔:

$midnight = strtotime('today');
$now = time();
$tomorrow = $midnight + 86400;
$diff = $tomorrow - $now;
$offset = $now;
// Number of seconds in 240 minutes = 14400
if ($diff <= 14400) {
  $offset += $diff;
}
$currentDay = date('l', $offset);
$CurrentTimeMinus30min = date('H:i:s', strtotime('-30 minutes'));
$CurrentTimePlus4Hours = date('H:i:s', strtotime('+240 minutes'));