Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Select:onde o tempo é maior e menor que o tempo


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