我在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 a.m.)。
如何更改格式?
看起来是你想要基于7:00am - 6:59am的旋转。你可以根据时间是否在早上7点之前进行排序,强制排序到2点……如果7am或AFTER,预排序为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更新调整。函数HOUR()的作用是:返回日期/时间列的数值值。你有HOURS()。现在,函数的参数是保存日期/时间字段的列的名称。我没有你的表结构知道列名,所以我只是叫它"columnTime"。根据SQLFiddle示例,我将其更改为…
HOUR(hours) <——HOUR()函数,使用表
你在找这个吗?
ORDER BY str_to_date(columntime,'%H:%i')
或
ORDER BY MINUTE(columntime) , SECOND(columntime)
演示
编辑:SELECT *
FROM tableName
ORDER BY CASE WHEN HOUR(date_time) BETWEEN 7 AND 12
THEN 2
else 1
end desc ,date_time asc