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

Jam Buka MySQL

Jika Anda tidak dapat mengubah tabel, Anda dapat menggunakan kueri ini:

SELECT COUNT(*) 
FROM opening_hrs
WHERE (((100*HOUR(NOW())+MINUTE(NOW()) >= openTime) 
        AND (100*HOUR(NOW())+MINUTE(NOW()) <= closeTime + 2400*(closeDay-openDay)))
       OR 
       ((100*HOUR(NOW())+MINUTE(NOW()) >= openTime - 2400*(closeDay-openDay)) 
        AND (100*HOUR(NOW())+MINUTE(NOW()) <= closeTime )))
AND openDay = 1

Jika Anda dapat memodifikasi tabel agar terlihat seperti ini:

+---------+----------+-----------+
|     day | openTime | closeTime |
+---------+----------+-----------+
|       0 | 1800     |  2400     |
|       1 | 1800     |  2400     |
|       2 | 1800     |  2400     |
|       3 | 1800     |  2400     |
|       4 | 1800     |  2400     |
|       5 | 1800     |  2400     |
|       6 | 1800     |  2400     |
|       0 |    0     |   400     |
|       1 |    0     |   400     |
|       2 |    0     |   400     |
|       3 |    0     |   400     |
|       4 |    0     |   400     |
|       5 |    0     |   400     |
|       6 |    0     |   400     |
+---------+----------+-----------+

maka Anda dapat melakukan kueri seperti ini:

SELECT COUNT(*) 
FROM opening_hrs
WHERE (100*HOUR(NOW())+MINUTE(NOW()) >= openTime) 
AND (100*HOUR(NOW())+MINUTE(NOW()) <= closeTime)
AND day = 1

Perhatikan bahwa tidak ada lagi openDay dan closeDay; hanya day kolom. Perhatikan juga bahwa openTime selalu kurang dari closeTime , sehingga ketidaksetaraan dalam kueri dapat berfungsi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menambahkan komentar di MySQL?

  2. waktu eksekusi mysql

  3. Apa perbedaan antara MySQL Native Driver dan MySQL Client Library?

  4. Menggunakan LAST_INSERT_ID() dalam sisipan multi baris

  5. javax.naming.NoInitialContextException dengan mysql DataSource