Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Godziny otwarcia MySQL

Jeśli nie możesz zmodyfikować tabeli, możesz użyć tego zapytania:

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

Jeśli możesz zmodyfikować tabelę, aby wyglądała tak:

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

wtedy możesz wykonać zapytanie w ten sposób:

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

Zauważ, że nie ma już openDay i closeDay; tylko day column.Zauważ również, że openTime jest zawsze mniejsza niż closeTime , więc nierówności w zapytaniu mogą działać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO Uzyskaj wiele identyfikatorów wstawek

  2. Konwersja z Microsoft SQL Server do MySQL

  3. pobierz wiersz z najwyższą wartością w MySQL

  4. Jakie jest domyślne zachowanie MySQL podczas ON DELETE?

  5. Jak przekonwertować mySQL Query do Laravel 5.4 Query Builder?