Du vil have TIME()
, ikke TIME()
.
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'
Jeg vil også stærkt foreslå at undslippe alle variabler, du indlejrer i SQL-kode med mysql_real_escape_string()
eller tilsvarende, selvom du er sikker på, at der ikke er noget skadeligt i dem, bare for at gøre det til en vane.
Bemærk, at en forespørgsel som denne i sig selv kan være ineffektiv, da den ikke kan gøre brug af indekser på StartTime
kolonne. Hvis der er mange potentielt matchende rækker i tabellen, kan det være en god idé at denormalisere din tabel ved at oprette en separat kolonne, der kun gemmer. tidsdelen af StartTime
og opsætning af et indeks på det (evt. kombineret med andre relevante kolonner).