SQLSERVER日期时间问题
现在有这么一个表,里有一个日期时间字段(2007-1-21 19:15:00)这样的格式,有日期,和时间。但现在有这样一个需求,就按日统计,按周统计,按月统计。
不知对日,对周,对月的时间计算是怎么样?
--------------------------------
举个例:
日期时间 数量
2007-1-1 19:31:25 56
2007-1-1 21:31:25 35
2007-1-1 35:31:25 43
2007-1-2 19:31:25 34
2007-1-3 35:31:25 35
2007-1-3 21:31:25 65
如何求到每天的数量平均值呢?
------解决方案----------------------每天平均值
select 日期时间,avg(数量) as 平均数量
group by convert(varchar(10),日期时间,120)
------解决方案--------------------group by convert(varchar(10), '2007-1-21 19:15:00 ',120) --对日
group by convert(varchar(7), '2007-1-21 19:15:00 ',120) --对月
------解决方案----------------------每月平均值
select 日期时间,avg(数量) as 平均数量
group by month(日期时间)
------解决方案--------------------对天,按convert(varchar(10),日期字段名,120)分组。
对月,按convert(varchar(7),日期字段名,120)分组。
对年,按convert(varchar(4),日期字段名,120)分组。
------解决方案----------------------每周平均值
select 日期时间,avg(数量) as 平均数量
group by datepart(week,日期时间)
------解决方案-------------------- select datepart(yy, '2007-1-21 19:15:00 ')--对年
select datepart(mm, '2007-1-21 19:15:00 ')--对月
select datepart(dd, '2007-1-21 19:15:00 ')--对天
------解决方案--------------------create table T(日期时间 datetime, 数量 int)
insert T select '2007-1-1 19:31:25 ', 56
union all select '2007-1-1 21:31:25 ', 35
union all select '2007-1-1 15:31:25 ', 43
union all select '2007-1-2 19:31:25 ', 34
union all select '2007-1-3 15:31:25 ', 35
union all select '2007-1-3 21:31:25 ', 65
--按日统计
select 日期时间=convert(char(10), 日期时间, 120), 数量=sum(数量)
from T
group by convert(char(10), 日期时间, 120)
--按周统计
select 日期时间=datepart(week, 日期时间), 数量=sum(数量)
from T
where year(日期时间)=year(getdate())
group by datepart(week, 日期时间)
--按月统计
select 日期时间=convert(char(7), 日期时间, 120), 数量=sum(数量)
from T
group by convert(char(7), 日期时间, 120)