查考:
取得今天所在月的开始和结束(例如今天是11月2号)select dateadd(day,28,dateadd(day,-datepart(day,getdate()),dateadd(month ,-1,getdate())))
select dateadd(day,27,dateadd(day,-datepart(day,getdate()),getdate()))结果:
2005-10-28
2005-11-27

解决方案 »

  1.   

    其实,只要比较的时候把你的字段中的日期数据向前推进几天就可以了嘛!用dateadd应该可以解决吧!
      

  2.   

    可以写成函数,但注意函数内不能使用getdate()
    declare @dt datetime
    select @dt=getdate()
    select convert(char(7),dateadd(month,-11,@dt),120)+'-28',convert(char(7),@dt,120)+'-27'
      

  3.   

    create function fnt_getdtRange(@dt datetime)
    returns @re table(dts datetime,dte datetime)
    as
    begin
    insert into @re
    select convert(char(7),dateadd(month,-11,@dt),120)+'-28',convert(char(7),@dt,120)+'-27'
    return
    enddeclare @date datetime
    select @date=getdate()
    select * from dbo.fnt_getdtRange(@date)
      

  4.   

    抱歉!兄弟们:可能我的表达令你们误解了。
    我的目的求年月。由于我厂的数据统计是按上月28号到本月的27号作为一个月的。
    现在我只会用CONVERT(char(7), 日期, 111)求出正常所属月份。
    现要求如下:
    日期           年月
    2005/8/10    2005/8
    2005/8/20    2005/8
    2005/8/28    2005/9
    2005/9/10    2005/9
    2005/9/27    2005/9
    2005/10/28    2005/11
    请再赐教!!谢谢
      

  5.   

    --获取年月
    --调用:  select dbo.f_date('2005/8/28')
    create function f_date(@dt datetime)
    returns varchar(10)
    as
    begin
          if day(@dt) between 1 and 27
             return CONVERT(char(7),@dt,111)      return CONVERT(char(7),dateadd(month,1,@dt),111)
    end
    go
      

  6.   

    select 日期,月=case when day(日期)<=27 then CONVERT(char(7), 日期, 111)
        else CONVERT(char(7), dateadd(month,1,日期), 111)
           end
    from 表