用户选择一个时间段,比如2013-5-20至2013-7-20,在这个时间里,我就处理为5月,6月,7月,这个SQL语句该怎么写呢

解决方案 »

  1.   

    create function generateTime(    @begin_date datetime,    @end_date datetime)returns @t table(date datetime)asbegin    with maco as    (       select @begin_date AS date       union all       select date+1 from maco       where date+1 <=@end_date    )    insert into @t    select * from maco option(maxrecursion 0);    returnend
    select distinct DATEPART(mm,[date]) from dbo.generateTime('2013-5-20','2013-7-20')/*
    -----------
    5
    6
    7
    */
      

  2.   

    上面那个函数是获取两个日期之间的所有日期(精确到天),我后面那个select就是一个例子而已,要怎么用你可以自己尝试一下,
      

  3.   

    lz 可直接根据用户输入的日期修改成年月形式
    使用convert(varchar(6),getdate(),112)
    然后根据这个进行分组汇总就可以