sql >> データベース >  >> RDS >> Mysql

MySQLの営業時間

    テーブルを変更できない場合は、次のクエリを使用できます:

    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
    

    テーブルを次のように変更できる場合:

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

    次に、次のようなクエリを実行できます:

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

    openDayとcloseDayはもうないことに注意してください。ただのday 列。openTimeにも注意してください。 常にcloseTimeよりも小さい 、したがって、クエリの不等式が機能する可能性があります。



    1. mysqlをmysqliに変更する方法は?

    2. 1つのクエリで2つのテーブルから行を削除する

    3. データをmysqlの列に分割します

    4. PostGISの動作