Anda ingin TIME()
, bukan 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'
Juga, saya akan sangat sarankan untuk keluar dari semua variabel yang Anda sematkan dalam kode SQL dengan mysql_real_escape_string()
atau setara, bahkan jika Anda yakin tidak ada yang berbahaya di dalamnya, biasakan saja.
Perhatikan bahwa kueri seperti ini mungkin secara intrinsik tidak efisien, karena tidak dapat menggunakan indeks pada StartTime
kolom. Jika ada banyak baris yang berpotensi cocok dalam tabel, sebaiknya denormalisasi tabel Anda dengan membuat kolom terpisah yang menyimpan saja bagian waktu dari StartTime
dan menyiapkan indeks di atasnya (mungkin digabungkan dengan kolom lain yang relevan).