Du vill ha TIME()
, inte HOUR()
.
SELECT * FROM cdr_table
WHERE OwnerUserID = '$_SESSION[user_id]'
AND GatewayID = $gateway_id
AND DATE(Dialed) = $date_sql
AND Dialed != 0
AND TIME(StartTime) BETWEEN '$start_time' AND '$end_time'
Jag skulle också starkt föreslå att du undviker alla variabler du bäddar in i SQL-kod med mysql_real_escape_string()
eller motsvarande, även om du är säker på att det inte finns något skadligt i dem, bara för att göra det till en vana.
Observera att en fråga som denna kan vara ineffektiv, eftersom den inte kan använda index på StartTime
kolumn. Om det finns många potentiellt matchande rader i tabellen kan det vara en bra idé att avnormalisera tabellen genom att skapa en separat kolumn som lagrar endast tidsdelen av StartTime
och sätta upp ett index på det (eventuellt kombinerat med andra relevanta kolumner).