我有日期时间格式的时间列表如何通过小时30分钟组
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
我有日期时间格式的时间列表如何通过小时30分钟组
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 REPLACE(DATE_FORMAT(datetime,'%h %p'),
' ' ,
IF(CEIL(MINUTE(datetime)/30)*30=60,':30 ',':00 ')) AS hour_time
, action
FROM table1
GROUP BY 1
这里有一种方法:
SELECT DATE_FORMAT(`datetime`,IF(MINUTE(`datetime`)<30,'%l:00%p','%l:30%p'))
, action
FROM ...
ORDER BY 1
要解开这一点:我们使用MINUTE函数来提取分钟部分从日期时间值。如果小于30,那么我们指定'00'作为分钟部分,否则我们指定'30'。其余的只是格式化。 %l
给我们从1到12的小时值,没有零填充。 %p
为我们提供'AM'或'PM'值。 (如果你需要小写,那么你可以将整个DATE_FORMAT表达式包装在LOWER()函数中。
这很干净! – Val 2013-02-22 17:16:38
这不是分组,你想做的只是纯粹的美学。 – 2013-02-22 01:20:47
我不得不以30分钟为间隔进行分组。我认为这是方式。 – Val 2013-02-22 01:22:53