我有日期时间格式的时间列表

datetime action
11:13:40 eat
12:33:40 sleep
14:44:40 walk
14:55:40 eat
14:59:40 call


我想分组

11:00am eat
12:30pm eat
2:30pm walk
2:30pm eat
2:30pm call

最佳答案

这是一种方法:

SELECT DATE_FORMAT(`datetime`,IF(MINUTE(`datetime`)<30,'%l:00%p','%l:30%p'))
     , action
  FROM ...
 ORDER BY 1


放松一下:我们使用MINUTE函数从datetime值中提取分钟部分。如果小于30,则将分钟部分指定为“ 00”,否则,将数字指定为“ 30”。其余的只是格式化。 %l给我们小时值从1到12,没有零填充。 %p为我们获取'AM'或'PM'值。 (如果需要小写,则可以将整个DATE_FORMAT表达式包装在LOWER()函数中。

关于mysql - 如何按小时30分钟分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15015286/

10-13 08:47