How to calculate age (in years) based on Date of Birth and getDate()

前端 未结 30 2409
死守一世寂寞
死守一世寂寞 2020-11-22 02:08

I have a table listing people along with their date of birth (currently a nvarchar(25))

How can I convert that to a date, and then calculate their age in years?

30条回答
  •  南方客
    南方客 (楼主)
    2020-11-22 02:27

    CREATE function dbo.AgeAtDate(
        @DOB    datetime,
        @CompareDate datetime
    )
    
    returns INT
    as
    begin
    
    return CASE WHEN @DOB is null
    THEN 
        null
    ELSE 
    DateDiff(yy,@DOB, @CompareDate) 
    - CASE WHEN datepart(mm,@CompareDate) > datepart(mm,@DOB) OR (datepart(mm,@CompareDate) = datepart(mm,@DOB) AND datepart(dd,@CompareDate) >= datepart(dd,@DOB))
      THEN 0 
      ELSE 1
      END
    END
    End
    
    GO
    

提交回复
热议问题