SQL 生日得到年龄

  
CREATE  FUNCTION ufn_hr_getagefrombirthday  
(  
    @birthday DATE,  
    @now DATE  =NULL  
      
)  
RETURNS VARCHAR(20)  
BEGIN  
  
  
    IF (@now IS NULL OR @now = '')  
    BEGIN  
        SET @now = GETDATE();  
    END;  
  
  
    DECLARE @age INT;  
    SET @age = 0;  
  
    DECLARE @result VARCHAR(20);  
  
    WHILE (DATEADD(YEAR, @age, @birthday) < @now)  
    BEGIN  
        SET @age = @age + 1;  
    END;  
  
  
  
    SELECT @result  
        = CAST(CASE  
                   WHEN (@age - 1) < 0 THEN  
                       0  
                   ELSE  
        (@age - 1)  
               END AS VARCHAR(4)) + ''  
          + CAST(DATEDIFF(  
                             DAY,  
                             DATEADD(   YEAR,  
                                        CASE  
                                            WHEN (@age - 1) < 0 THEN  
                                                0  
                                            ELSE  
                                        (@age - 1)  
                                        END,  
                                        DATEADD(DAY, 1, @birthday)  
                                    ),  
                             DATEADD(YEAR, @age, DATEADD(DAY, 1, @birthday))  
                         ) + 1 - (DATEDIFF(DAY, @now, DATEADD(YEAR, @age, DATEADD(DAY, 1, @birthday)))) AS VARCHAR(4))  
          + '/'  
          + CAST(DATEDIFF(  
                             DAY,  
                             DATEADD(YEAR, @age - 1, DATEADD(DAY, 1, @birthday)),  
                             DATEADD(YEAR, @age, DATEADD(DAY, 1, @birthday))  
                         )  
AS      VARCHAR(4))  + '';  
  
  
    RETURN @result;  
END;
原文地址:https://www.cnblogs.com/BinBinGo/p/10468824.html