Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Select :където времето е по-голямо и по-малко от времето

Искате TIME() , а не 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'

Също така силно предлагам екраниране на всички променливи, които вграждате в SQL кода с mysql_real_escape_string() или еквивалент, дори ако сте сигурни, че няма нищо вредно в тях, просто за да го превърнете в навик.

Обърнете внимание, че заявка като тази може да е по същество неефективна, тъй като не може да използва индекси на StartTime колона. Ако в таблицата има много потенциално съвпадащи редове, може да е добра идея да денормализирате таблицата си, като създадете отделна колона, съхраняваща само времевата част от StartTime и настройване на индекс върху него (евентуално комбиниран с други подходящи колони).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка в изготвения израз на mysql:MySQLSyntaxErrorException

  2. Сфинкс и имахте предвид ...? идея за предложения. Ще работи ли?

  3. REPLACE срещу INSERT в SQL

  4. Предупреждение:mysql_result() [function.mysql-result]:Не може да се премине към ред 0 на MySQL резултатен индекс 5 в profile.php на ред 11

  5. Множество обединявания в MySQL таблица