Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL Select:khi đó thời gian lớn hơn và ít hơn thời gian

Bạn muốn TIME() , không phải 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'

Ngoài ra, tôi sẽ mạnh mẽ đề xuất thoát tất cả các biến bạn đang nhúng trong mã SQL bằng mysql_real_escape_string() hoặc tương đương, ngay cả khi bạn chắc chắn rằng không có gì có hại trong đó, chỉ để biến nó thành thói quen.

Lưu ý rằng một truy vấn như thế này về bản chất có thể không hiệu quả, vì nó không thể sử dụng các chỉ mục trên StartTime cột. Nếu có nhiều hàng có khả năng khớp trong bảng, bạn nên chuẩn hóa lại bảng của mình bằng cách tạo một cột riêng biệt lưu trữ chỉ phần thời gian của StartTime và thiết lập một chỉ mục trên đó (có thể kết hợp với các cột khác có liên quan).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khóa ngoại Mysql bằng khóa không phải là khóa duy nhất - điều đó có thể xảy ra như thế nào?

  2. Shoretel - Truy vấn cuộc gọi đi

  3. Sao lưu và khôi phục đơn giản cho Cơ sở dữ liệu mysql từ Java

  4. Làm cách nào để phát hiện các hàng thừa trong bảng?

  5. Chọn nhiều cột / trường trong truy vấn con MySQL