表未完全显示

时间:2016-08-27 14:29:01

标签: php mysql css

我使用了来自jquery的datepicker函数(一个作为startdate,另一个作为enddate)并使用它来从用户获取日期&查询mysql数据库。

当用户为例如输入startdate时。 8月25日和8月26日结束,表只输出24行(混合25和26),实际上应该是48行小时。怎么解决?

<script>
        $( function(){
        $("#startdate").datepicker({dateFormat: 'yymmdd'});
        } );

        $( function(){
        $("#enddate").datepicker({dateFormat: 'yymmdd'});
        } );
</script>


<?php
  $connect = new mysqli("x.x.x.x","acacacac","acacacac","acacacac");
  $startdate=$_POST['startdate'];
  $enddate=$_POST['enddate'];
  $ingress=$_POST['ingress'];
  $sql="SELECT
        DATE_FORMAT(ingress_call_info_inviting_ts,'%Y-%m-%d %H') AS Hourly,
        ingress_call_info_zone_name as Ingress,
        Count(cat.id) AS Attempts
        FROM asas
        WHERE 
        ingress_call_info_inviting_ts BETWEEN '$startdate' AND '$enddate' AND
        ingress_call_info_zone_name LIKE '$ingress'
        GROUP BY TIME_FORMAT(ingress_call_info_inviting_ts,'%H:00')
        ORDER BY TIME_FORMAT(ingress_call_info_inviting_ts,'%H:00')";
        $records=$connect->query($sql);
?>

<?php
while ($report=$records->fetch_assoc()) {      
echo "<tr>";
?><td style="border:1px solid black; text-align: center;>"<?php
echo "<td border='1'>".$report['Hourly']."</td>";
?><td style="border:1px solid black; text-align: center;>"<?php
echo "<td border='1'>".$report['Ingress']."</td>";
?><td style="border:1px solid black; text-align: center;>"<?php
echo "<td border='1'>".$report['Attempts']."</td>";
echo "</tr>";       
}
?>
<?php } ?>

1 个答案:

答案 0 :(得分:0)

由于$startdate$enddate没有时间,因此使用00:00:00作为时间。 $enddate之后00:00:00之后的任何时间都不会被包含在内。你可以使用

WHERE DATE(ingress_call_inviting_ts) BETWEEN '$startdate' AND '$enddate'

但是这不能在列上使用索引,所以它可能很慢。您还可以将日期结束的时间添加到$enddate

WHERE ingress_call_info_inviting_ts BETWEEN '$startdate' AND '{$enddate}235959'