2016-08-27 18 views
0

jquery(startdateとenddate)のdatepicker関数を使用して、mysqlデータベースを照会するユーザ&から日付を取得しました。テーブルが完全に表示されていません

ユーザーがたとえばstartdateと入力すると、 8月25日と8月26日の終わりに、テーブルは24行(25thの混合)を出力します。実際には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

$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' 
+0

あなたは時間フォーマットについて正しいです。私のデータベースの日時の列には「YYMMDDHHmmSSxxxx」があります。私はテーブルの出力を取得していますが、問題はありませんが、日付に2日の違いがある場合、データは2日間(24行固定)からランダムに表示されますが、 (2日間は48時間です)。 – Ayaz

+0

列のデータ型は何ですか? 'DATETIME'か' VARCHAR'ですか? – Barmar

+0

datatypeはdatetimeです。 Navicatのような他のサードパーティ製のソフトウェアで同じクエリを使用しているので、mysqlクエリに問題はないと確信しています。 PHPでやっている間に問題がある。 – Ayaz

関連する問題