Note: There is a bug in the F_AGE_YYYY_MM_DD function Modify the below example to fit your needsselect fromdt ,todt ,duration= case when datepart(dd,todt)<datepart(dd,fromdt) then convert(varchar(4),(datediff(mm,fromdt,todt)-1)/12)+' Years ' +convert(varchar(2),(datediff(mm,fromdt,todt)-1)%12)+' Months ' +convert(varchar(2),datediff(dd,dateadd(mm, (datediff(mm,fromdt,todt)-1),fromdt),todt))+' Days' else convert(varchar(4),datediff(mm,fromdt,todt)/12) +' Years ' +convert(varchar(2),datediff(mm,fromdt,todt)%12) +' Months ' +convert(varchar(2),datediff(dd,dateadd(mm, (datediff(mm,fromdt,todt)),fromdt),todt)) +' Days' end from (select convert(datetime,'20000229') fromdt ,dateadd(dd,number,'20000229') todt from master..spt_values where type='P' ) view1 order by 2