我使用了来自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 } ?>
答案 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'