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'
Inoltre, lo farei fortemente suggerisci di eseguire l'escape di tutte le variabili che stai incorporando nel codice SQL con mysql_real_escape_string()
o equivalente, anche se sei sicuro che non ci sia nulla di dannoso, solo per farne un'abitudine.
Nota che una query come questa potrebbe essere intrinsecamente inefficiente, poiché non può utilizzare gli indici su StartTime
colonna. Se nella tabella sono presenti molte righe potenzialmente corrispondenti, potrebbe essere una buona idea denormalizzare la tabella creando una colonna separata che memorizza solo la parte temporale di StartTime
e impostando un indice su di esso (possibilmente combinato con altre colonne pertinenti).