Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 跨越2天时按时间划分的SQL顺序_Mysql_Sql_Datetime - Fatal编程技术网

Mysql 跨越2天时按时间划分的SQL顺序

Mysql 跨越2天时按时间划分的SQL顺序,mysql,sql,datetime,Mysql,Sql,Datetime,标题可能很神秘,但我的问题是 我有一张一天行程表。例如,每个参观博物馆的入口都有slot\u start和slot\u end time列。这是24小时格式,例如13:00:00-15:00:00 我想通过slot\u start asc订购这些,但我可以通过slot\u start 00:00:00进入酒吧/俱乐部,即午夜,这将首先订购,这将是正确的顺序,但由于这实际上是新的一天,我希望它在博物馆之后 没有具体的日期。他们只受吃角子老虎的时间限制,被认为是一天中的大事 有人有过这种设置的经验吗

标题可能很神秘,但我的问题是

我有一张一天行程表。例如,每个参观博物馆的入口都有slot\u start和slot\u end time列。这是24小时格式,例如13:00:00-15:00:00

我想通过slot\u start asc订购这些,但我可以通过slot\u start 00:00:00进入酒吧/俱乐部,即午夜,这将首先订购,这将是正确的顺序,但由于这实际上是新的一天,我希望它在博物馆之后

没有具体的日期。他们只受吃角子老虎的时间限制,被认为是一天中的大事


有人有过这种设置的经验吗?或者有人能提出一种不同的方式来设置每个“事件”的时间吗?我想我可能需要介绍一些关于第1天、第2天的内容…

您可以使用以下方法按多列排序:

ORDER BY Day, Time

那么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 

但同样,这不是一个好的解决方案。理想情况下,您需要在表上设置一个day控件

我个人使用start\u unix和duration

start_unix是事件启动时的unix_时间戳 持续时间就是持续时间 结束\u unix=开始\u unix+持续时间 这是实现完全控制这些问题的简单方法


对你来说,一个罪恶的解决方案可能是将这些超过午夜的时间设置为25:00:00 01:00:00,当你向他们展示时,你会选择MODslot_start,24作为插槽开始模式,并按插槽开始排序。

您可以从实际插槽开始时间中减去1分钟,仅用于排序,但建议使用表中的日期列

Select * from Table order by dateadd(minute,-1,TIME)

dateadd函数将-1分钟添加到时间列,以便对其进行排序

什么dbms?SQL是一种语言。是的,我知道,使用MySQL不会按插槽顺序开始,而不是在'00:00:01'和'02:59:59'之间。说明,插槽开始ASC比使用union更容易?