mysql分组查询(按每小时)
这个很简单,只要字段是时间类型
select DATE_FORMAT( tf.curr_time ,'%H') as dataStartTime
from t_fundjour tf group by dataStartTime
mysql分组查询(按半小时)
逻辑:就需要用到分钟0-30分钟属于AM10:00,30-59分钟属于AM10:30
select DATE_FORMAT( concat(date(tf.curr_time ),' ',hour(tf.curr_time ),':',floor( minute(tf.curr_time )/30 )*30) ,'%Y-%m-%d %H:%i') as dataStartTime
from t_fundjour tf
注意:pattern需要把%Y-%m-%d都加上
昨天想到一个对于基本类型时间(long,int)的计算方式
例:curr_time :93100(09时:31分:00秒)
sql:
CONCAT(floor(a.curr_time /10000),':', floor(floor(right(a.curr_time , 4)/100)/30)*30)
算法分析:
1、curr_time 为93100,103100…
2、要取到分钟进行判断是否在半小时内
3、right(a.curr_time , 4) /100从右面截取4位然后/100去除秒值,得31
4、上面得出的值/30然后用floor取整得1,然后乘以30,小于30分的逻辑相同
5、加上小时,就得到每半小时的值了