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

Giờ mở cửa MySQL

Nếu bạn không thể sửa đổi bảng, thì bạn có thể sử dụng truy vấn này:

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

Nếu bạn có thể sửa đổi bảng để trông như thế này:

+---------+----------+-----------+
|     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     |
+---------+----------+-----------+

thì bạn có thể thực hiện truy vấn như sau:

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

Lưu ý rằng không có openDay và closeDay nữa; chỉ một day cũng lưu ý rằng openTime luôn nhỏ hơn closeTime , vì vậy các bất bình đẳng trong truy vấn có thể hoạt động.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo truy vấn trong Drupal 8

  2. Cách sử dụng các câu lệnh chuẩn bị sẵn trong các truy vấn với mệnh đề IN trong PHP

  3. Toán tử logic AND trong mySql REGEXP?

  4. Thay đổi và đặt lại mật khẩu gốc MySQL

  5. MySql có thể khôi phục một giao dịch sql trên nhiều bảng không?