我在 mysql 上有一个每周时间表,其中我使用内置的 ORDER BY
函数按时间对事件进行排序:ORDER BY time
。
实际结果
00:01
07:00
08:00
11:00
23:00
预期结果
07:00
08:00
11:00
23:00
00:01
01:00
04:00
等,直到 07:00(例如上午 7 点模数)。
如何更改格式?
最佳答案
看起来您希望基于上午 7:00 - 早上 6:59 进行轮换。您可以根据时间是否在上午 7 点之前进行排序,强制预排序为 2...如果上午 7 点或之后,预排序为 1,然后按自然时间排序...
order by
case when hour( columnTime ) < 7 then 2 else 1 end,
columntime
如果你的时间样本是这样
00:01a
02:27a
05:42a
06:59a
07:00a
10:29a
02:27p
11:59p
预排序的结果会像...
PRESORT Time
1 07:00a
1 10:29a
1 02:27p
1 11:59p
2 00:01a
2 02:27a
2 05:42a
2 06:59a
通过 SQLFiddle adjusted 更新。函数 HOUR() 返回日期/时间列的数字。你有 HOURS()。现在,函数的参数是保存日期/时间字段的列的名称。我没有你的表结构来知道列名,所以我只是将其称为“columnTime”。根据您拥有的 SQLFiddle 示例,我将其更改为...
HOUR( 小时 ) <-- HOUR() 函数,使用表中的“小时”列
关于php - 对 ORDER BY 查询应用循环移位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23760734/