How to calculate age in T-SQL with years, months, and days

后端 未结 24 1964
无人共我
无人共我 2020-11-22 05:42

What would be the best way to calculate someone\'s age in years, months, and days in T-SQL (SQL Server 2000)?

The datediff function doesn\'t handle year

24条回答
  •  日久生厌
    2020-11-22 06:15

    CREATE FUNCTION DBO.GET_AGE
    (
    @DATE AS DATETIME
    )
    RETURNS VARCHAR(MAX)
    AS
    BEGIN
    
    DECLARE @YEAR  AS VARCHAR(50) = ''
    DECLARE @MONTH AS VARCHAR(50) = ''
    DECLARE @DAYS  AS VARCHAR(50) = ''
    DECLARE @RESULT AS VARCHAR(MAX) = ''
    
    SET @YEAR  = CONVERT(VARCHAR,(SELECT DATEDIFF(MONTH,CASE WHEN DAY(@DATE) > DAY(GETDATE()) THEN DATEADD(MONTH,1,@DATE) ELSE @DATE END,GETDATE()) / 12 ))
    SET @MONTH = CONVERT(VARCHAR,(SELECT DATEDIFF(MONTH,CASE WHEN DAY(@DATE) > DAY(GETDATE()) THEN DATEADD(MONTH,1,@DATE) ELSE @DATE END,GETDATE()) % 12 ))
    SET @DAYS = DATEDIFF(DD,DATEADD(MM,CONVERT(INT,CONVERT(INT,@YEAR)*12 + CONVERT(INT,@MONTH)),@DATE),GETDATE())
    
    SET @RESULT = (RIGHT('00' + @YEAR, 2) + ' YEARS ' + RIGHT('00' + @MONTH, 2) + ' MONTHS ' + RIGHT('00' + @DAYS, 2) + ' DAYS')
    
    RETURN @RESULT
    END
    
    SELECT DBO.GET_AGE('04/12/1986')
    

提交回复
热议问题