datetime如何 group by 每3个小时?
sqlite里怎么写?或者sqlserver 怎么写?或者 mysql怎么写?
------解决思路----------------------
USE AdventureWorks2012;
GO
SELECT
datepart(year,TH.TransactionDate) as 'year'
, datepart(month,TH.TransactionDate) as 'month'
, datepart(day,TH.TransactionDate) as 'day'
, ceiling((datepart(hour,TH.TransactionDate)+2)/3) as 'interval'
, SUM(TH.ActualCost)
FROM Production.TransactionHistory TH
GROUP BY
datepart(year,TH.TransactionDate)
, datepart(month,TH.TransactionDate)
, datepart(day,TH.TransactionDate)
, ceiling((datepart(hour,TH.TransactionDate)+2)/3)
order by 1,2,3,4
------解决思路----------------------
group by datediff(hh,time,'定一个起点时间')/3
看下下面的结果就明白了。
select datediff(hh,'2015-05-30 1:00:00','2015-05-30')/3
select datediff(hh,'2015-05-30 3:00:00','2015-05-30')/3
select datediff(hh,'2015-05-30 5:00:00','2015-05-30')/3
select datediff(hh,'2015-05-30 7:00:00','2015-05-30')/3
------解决思路----------------------
declare @tab table(opdate smalldatetime,val int)
insert into @tab
select '2015-05-30 15:09:43',5
union all select '2015-05-30 10:09:43',15
union all select '2015-05-29 10:09:43',15
union all select '2015-05-30 22:09:43',15
select sum(val) 合計,convert(varchar(10),opdate,111) as 日期 ,datepart(hh,opdate)/3 分段
from @tab
group by convert(varchar(10),opdate,111),datepart(hh,opdate)/3