我在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点)。
如何更改格式?
发布于 2014-05-20 21:41:58
它显示的是您想要基于7:00am - 6:59am的轮换你可以根据时间是否在上午7点之前进行排序,强制预先排序为2...如果上午7点或之后,pre-sort为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更新。函数的作用是:返回日期/时间列的数值。你有几个小时()。现在,函数的参数是保存日期/时间字段的列的名称。我没有您的表结构来知道列名,所以我只称它为"columnTime“。根据你的SQLFiddle样本我把它改成..。
HOUR( hours ) <-- HOUR()函数,使用表中的"hours“列
发布于 2014-05-20 21:11:32
你可能在找这个?
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 aschttps://stackoverflow.com/questions/23760734
复制相似问题