我的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
,依此类推,其中day
是int
在1到7之间,我想制作一个SELECT
,以便根据当前开店时间对我的结果进行排序。该查询将被分页,因此选择所有行并在PHP中对其进行排序的想法不正确。有没有办法这样查询:
当前时间为15:00,查询应返回顺序为1、3、2、4,如果时间为17:00,则返回1,2,4,3。首先先获得今天开张的商店,然后再获得明天,依此类推...
答案 0 :(得分:0)
使用lpad()
和concat()
为open
和close
列进行可比较的时间,然后进行如下排序:
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。