我有一天的事件表(行程)。每个条目(例如访问博物馆)都有slot_start和slot_end时间列。这是24小时格式,例如13:00:00 - 15:00:00。
我想通过slot_start asc订购这些,但我可以通过slot_start 00:00:00来获得“去酒吧/俱乐部”的条目。午夜,这将是第一次订购,这将是正确的订单,但由于这实际上是新的一天,我希望它来到博物馆后。
这些没有具体日期。他们只受到他们的老虎机时间的限制,并被认为是一天的事件。
有没有人有这种设置的经验?或者,任何人都可以建议一种不同的方式来设置每个'事件'的时间?我想我可能不得不在第1天,第2天介绍某天的某些元素......
答案 0 :(得分:0)
您可以使用以下方式按多列排序:
ORDER BY Day, Time
答案 1 :(得分:0)
所以“00:00:00”是指在博物馆之后,如果他们在00:01:00进入俱乐部?还是00:01:00?
你需要在桌子上用“天”来控制它。
对你的问题一个非常“丑陋”的解决方案是这样的:
首先选择一个“限制”来考虑总是“较旧”的记录,让我们说3AM所以3之前的每个记录都将被视为“之后”其他所有记录。然后做:
select *
from your_table
where slot_start > '03:00:00'
order by slot_start
union
select *
from your_table
where slot_start < '03:00:00' and slot_start > '00:00:00'
order by slot_start
但同样,这不是一个好的解决方案。理想情况下,您需要在桌面上进行“日间”控制
答案 2 :(得分:0)
我个人使用start_unix和持续时间。
这是实现对这些问题的完全控制的简单方法。
对你来说,一个有罪的解决方案可能是将这些经过午夜的时间设置为例如25:00:00(01:00:00),当你展示它们时,你会做SELECT MOD(slot_start, 24) AS slot_start_mod
和{{ 1}}。
答案 3 :(得分:0)
这是一个想法,您可以从实际的Slot_start时间中减去1分钟,仅用于排序(但建议在表格中使用日期列)。
Select * from Table order by dateadd(minute,-1,TIME)
dateadd函数将(-1)分钟添加到TIME列只是为了对它们进行排序