select dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,[订单创建时间]),120),dateadd(ss,-1,[订单创建时间]))/30)*30,convert(varchar(10),[订单创建时间],120)) as 时间段,
count([订单号]) as 订单总量
from T_VALID_ORDER
where [订单创建时间]<'2017-12-31 23:59:59' and [订单创建时间]>'2016-01-01 00:00:00'
group by dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,[订单创建时间]),120),dateadd(ss,-1,[订单创建时间]))/30)*30,convert(varchar(10),[订单创建时间],120))
order by 时间段
Reference: http://bbs.csdn.net/topics/360003771