Vous voulez TIME()
, pas 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'
Aussi, j'aimerais fortement suggère d'échapper toutes les variables que vous intégrez dans le code SQL avec mysql_real_escape_string()
ou équivalent, même si vous êtes sûr qu'ils ne contiennent rien de nocif, juste pour en faire une habitude.
Notez qu'une requête comme celle-ci peut être intrinsèquement inefficace, car elle ne peut pas utiliser d'index sur StartTime
colonne. S'il y a beaucoup de lignes potentiellement correspondantes dans le tableau, il peut être judicieux de dénormaliser votre tableau en créant une colonne séparée stockant uniquement la partie horaire de StartTime
et la création d'un index dessus (éventuellement combiné avec d'autres colonnes pertinentes).