sql >> Databáze >  >> RDS >> Mysql

MySQL Select :kde je čas větší a menší než čas

Chcete TIME() , nikoli 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'

Také bych silně navrhněte escapování všech proměnných, které vkládáte do kódu SQL, pomocí mysql_real_escape_string() nebo ekvivalentní, i když jste si jisti, že v nich není nic škodlivého, jen abyste si z toho udělali zvyk.

Upozorňujeme, že dotaz, jako je tento, může být ze své podstaty neefektivní, protože nemůže využívat indexy v StartTime sloupec. Pokud je v tabulce mnoho potenciálně shodných řádků, mohlo by být dobré tabulku denormalizovat vytvořením samostatného sloupce, který by obsahoval pouze časová část StartTime a nastavení indexu (případně v kombinaci s dalšími relevantními sloupci).



  1. WSJDBCConnection nezalamuje objekty typu Oracle jdbc Connection

  2. Cant pg_restore na Heroku:nelze číst ze vstupního souboru:konec souboru

  3. MySQL seřadí příspěvky podle posledního komentáře NEBO posledního příspěvku

  4. Mohu použít klíčové slovo Postgres jako alias ve vybraném seznamu?