例如:2013-01-28,2013-02-02显示结果为:  日期           年月
              2013-01-28    2013-01
              2013-01-29    2013-01
              2013-01-30    2013-01
              2013-01-31    2013-01
              2013-02-01    2013-02
              2013-02-02    2013-02

解决方案 »

  1.   

    declare @sd datetime,@ed datetime
    select @sd='2013-01-28',@ed='2013-02-02'
    select CONVERT(varchar(10),dt,120) as 日期,CONVERT(varchar(7),dt,120) as 年月
    from(
     select 
      dateadd(dd,number,@sd) as dt
      from master..spt_values
      where type='P' and dateadd(dd,number,@sd)<=@ed
      ) t  /**
      日期         年月
    ---------- -------
    2013-01-28 2013-01
    2013-01-29 2013-01
    2013-01-30 2013-01
    2013-01-31 2013-01
    2013-02-01 2013-02
    2013-02-02 2013-02(6 行受影响)
    **/