读书人

SQLSERVER日期时间有关问题

发布时间: 2012-01-11 22:28:46 作者: rapoo

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)

读书人网 >SQL Server

热点推荐