Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Select :di mana waktu lebih besar dan lebih kecil dari waktu

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).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penyimpanan array byte mysql

  2. MySQL - nomor baris di recordset?

  3. Bagaimana cara mengganti semua kemunculan char dengan elemen dari array?

  4. php artisan migration throw [Pengecualian PDO] Tidak dapat menemukan driver - Menggunakan Laravel

  5. Bagaimana cara membuat matriks dinamis di php?