dateadd(day,-1,dateadd(mm,1,dateadd(day,-datepart(day,字段名)+1,字段名))) 

解决方案 »

  1.   

    这个试试
    declare @DatTim   dattime
    declare @LastDT datetime
    select @DatTim='2002-7-5'
    select @LastDT=dateadd(day,-datepart(day,@DatTim),dateadd(month,1,@DatTim))
    select @LastDT
      

  2.   

    to: micha_he(不会就学) 
      你的方法是错误的,SQL SERVER版的前斑竹Yang_专门发了一个贴来更正这个问题,你可以找一下这个贴,在SQL SERVER版.declare @DatTim   dattime
    declare @LastDT datetime
    select @DatTim='2002-1-31'
    select @LastDT=dateadd(day,-datepart(day,@DatTim),dateadd(month,1,@DatTim))
    select @LastDT结果:2002-1-28
      

  3.   

    http://www.csdn.net/expert/topic/790/790277.xml?temp=.8298914
      

  4.   

    http://www.csdn.net/expert/topic/790/790277.xml?temp=.8298914
      

  5.   

    哇噻,楼上的,你那帖太长了啊,一句话搞定的事情你给写了个PROC:)
      

  6.   

    上面的说错了:(
    更正:
    指定日期加1个月为新日期1,新日期1减1个月为新日期2,新日期1与新日期2关于Day的Datediff,就是所求
      

  7.   

    由於每种数据库的规格都不同, Access, Vfp, MS SQL, Oracle, DB2, Interbase, ....的处理方法都不同.我想用Delphi於前端编程, 会比用SQL来做会较方便.    Fdate := Query1.fieldByName('MyDate').AsDateTime;
        DecodeDate(FDate, AYear, AMonth, ADay);                       
        LastDate := EncodeDate(AYear, AMonth, 1) -1; ......    Query2.ParamByName('whereCondition1').AsDateTime 
        := LastDate;如何? 
      

  8.   

    谢谢楼上各位,我用了 erickleung的方法,我对SQL不熟,用Delphi编程好一些。结帖了!