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'
Además, enfáticamente sugiera escapar todas las variables que está incrustando en el código SQL con mysql_real_escape_string()
o equivalente, incluso si está seguro de que no hay nada dañino en ellos, solo para convertirlo en un hábito.
Tenga en cuenta que una consulta como esta puede ser intrínsecamente ineficiente, ya que no puede utilizar índices en el StartTime
columna. Si hay muchas filas potencialmente coincidentes en la tabla, podría ser una buena idea desnormalizar su tabla creando una columna separada que almacene solo la parte de tiempo de StartTime
y configurar un índice en él (posiblemente combinado con otras columnas relevantes).