Laravel中如何按from_time与to_time两列升序排序订单
按时间区间排序订单的实现方案
嘿,我明白你需要把订单按照from_time和to_time升序排列,得到1、3、2的结果对吧?这就给你梳理清楚怎么实现:
先确认你的订单表结构
你的订单表字段如下:
id, user_id, from_time, to_time, product_id, quantity, price, created_at, updated_at
现有3条订单数据(简化后)
- user_id: 1, from_time: 10:00, to_time: 11:00
- user_id: 2, from_time: 12:00, to_time: 15:00
- user_id: 3, from_time: 11:00, to_time: 12:00
实现排序的SQL语句
要达成你想要的排序效果,只需要在查询时指定按from_time升序,再按to_time升序排序就行,SQL代码如下:
SELECT * FROM orders ORDER BY from_time ASC, to_time ASC;
为啥这样排序能得到你要的结果?
咱们来拆解下排序逻辑:
- 第一条订单的
from_time是10:00,是三个里面最早的起始时间,自然排第一 - 第三条订单的
from_time是11:00,比第一条晚但比第二条早,所以排第二 - 第二条订单的
from_time是12:00,是最晚的起始时间,排第三
刚好就是你期望的1、3、2的顺序~
另外要注意,如果你的from_time和to_time是数据库的时间类型(比如TIME、DATETIME),这个排序会直接生效;如果是字符串类型,只要是HH:MM这种标准的时间格式,排序逻辑也能正常工作哦。
内容的提问来源于stack exchange,提问作者Paul Diamant
相关产品推荐
相关产品推荐

