通过MYSQL的开放时间订购商店

时间:2019-11-22 15:33:58

标签: mysql group-by sql-order-by

我的mySQL数据库中有一个表,如下所示:

id | shop_id | day | open | close
---------------------------------
1  | 1       | 1   | 8    | 18
---------------------------------
2  | 100     | 2   | 9    | 17
---------------------------------
3  | 200     | 1   | 8    | 16
---------------------------------
4  | 220     | 4   | 10   | 17

,依此类推,其中dayint在1到7之间,我想制作一个SELECT,以便根据当前开店时间对我的结果进行排序。该查询将被分页,因此选择所有行并在PHP中对其进行排序的想法不正确。有没有办法这样查询:

当前时间为15:00,查询应返回顺序为1、3、2、4,如果时间为17:00,则返回1,2,4,3。首先先获得今天开张的商店,然后再获得明天,依此类推...

1 个答案:

答案 0 :(得分:0)

使用lpad()concat()openclose列进行可比较的时间,然后进行如下排序:

set @time1 = '15:00';
select * 
from tablename
order by 
  @time1 not between concat(lpad(open, 2, '0'), ':00') and concat(lpad(close, 2, '0'), ':00'),
  lpad(open, 2, '0'),
  id

请参见demo