Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Select :dove il tempo è maggiore e minore del tempo

Vuoi TIME() , non 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'

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).