Você quer
TIME()
, não 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'
Além disso, eu fortemente sugira escapar de todas as variáveis que você está incorporando no código SQL com
mysql_real_escape_string()
ou equivalente, mesmo que você tenha certeza de que não há nada de prejudicial neles, apenas para torná-lo um hábito. Observe que uma consulta como essa pode ser intrinsecamente ineficiente, pois não pode usar índices no
StartTime
coluna. Se houver muitas linhas potencialmente correspondentes na tabela, pode ser uma boa ideia desnormalizar sua tabela criando uma coluna separada armazenando somente a parte do tempo do StartTime
e configurar um índice nele (possivelmente combinado com outras colunas relevantes).