select frdt,todt,daynum,(todt+1得到的日期) begindt,(根据daynum/15*6/(float)12计算得到的日期) enddt
from table
例如 当 frdt=2009-06-01  todt=2009-07-11  时begindt=todt+1=2009-07-12当daynum=41时41/15*6/(float)12=1年
enddt=begindt+1年=2010-07-12
如果 daynum=4646/15*6/(float)12=1.5年enddt=begindt+1.5年=2011-07-12如果 daynum/15*6/(float)12>=5年时,按5年算,要实现这样的功能,得怎么写的?

解决方案 »

  1.   

    select frdt,todt,daynum,dateadd(d,1,todt) begindt,(case when daynum/15*6>=60 then dateadd(m,60,dateadd(d,1,todt)) else
    dateadd(m,daynum/15*6,dateadd(d,1,todt))) enddt 
    from table 
      

  2.   

    begindt可以通过
    CONVERT(varchar(10), DATEADD(day, 1, b.todt), 120) AS begindt来得到,enddt就不知怎么写了
      

  3.   

    select frdt,todt,daynum,
    begindt=DATEADD(DD,1,todt),
    enddt=dateadd(year,ceiling(case when (daynum/15*6/12)*1.0>=5 then 5
                                else (daynum/15*6/12)*1.0 end)
     ,DATEADD(DD,1,todt))
    from [table]
      

  4.   


    select frdt,todt,daynum,dateadd(d,1,todt) begindt,(case when daynum/15*6>=60 then dateadd(m,60,dateadd(d,1,todt)) else
    dateadd(m,daynum/15*6,dateadd(d,1,todt)) end) enddt 
    from table 
      

  5.   

    用这样
    select frdt, todt, daynum, 
          CONVERT(varchar(10), DATEADD(day, 1, b.todt), 120) AS begindt, 
      CONVERT(varchar(10), dateadd(year,ceiling(CASE WHEN daynum / 15 * 6 / (12 * 1.0) 
          >= 5 THEN 5 ELSE daynum / 15 * 6 / (12 * 1.0) END), DATEADD(DD, 1, todt)), 120)       enddtfrom table 
    得到所要的了