sql server 按月查询

来源:百度知道 编辑:UC知道 时间:2024/05/14 17:47:45
数据库格式如下:
字段1,字段2, 时间
... ... 2008-1-1
... ... 2008-1-2
... ... ...
... ... 2008-12-1
... ...
... ... 2009-1-1
... ... ...
怎么按月查询呀?注意是不同年份的,查询结果如下:
... ... 2008-1
... ... 2008-2
... ... ...
... ... 2008-12
... ... ...
... ... 2009-1
... ... ...
谢谢各位大侠,悬赏100分,全部家当了,呜呜。。。
我可能没说明白,我要做一个报表,是月报,就是输入一个时间段,比如:2008-2 到2009-5 然后就可以在数据库里面查询2008年2月的统计数,一直到2009-5。数据库里面时间存的是datetime类型

你意思是不是查询结果的时间列中只显示年月是吗?你看看这语句符合你意思不:
SELECT 字段1,字段2,时间=CONVERT(varchar(7), 时间, 120) FROM 表名

TO_CHAR(时间地段,'yyy-mm') 就可以转换成月份了

然后用这个group by这个月份就可以了哎

很简单的吗。。

我可以搞定。你得把需求说明白
CONVERT (data_type ,varchar(5或2), 114)

HI我吧

比如,要查2008-02的:
SELECT * FROM 表1 WHERE CONVERT(varchar(7), 时间, 120)='2008-02'

如果只是想让查询结果里的时间只显示到月
SELECT 字段1,字段2,CONVERT(varchar(7), 时间, 120) AS 时间 FROM 表1

哈哈,做报表我最有经验了,我给你个大概思路吧

select A.date0 as date0,A.name1 as name1,sum(price1) as price1 from (select '2008年1月' as date0,name1,price1,date1 from table1 where date1 between '2008-1-1' and '2008-1-31'

union all

select '2008年2月' as date0,name1,price1,date1 from table1 where date1 between '2008-2-1' and '2008-2-29'

union all

select '2008年3月' as date0,name1,price1,date1 from table1 where date1 between '20