How to get an age from a D.O.B field in MySQL?

后端 未结 13 1552
鱼传尺愫
鱼传尺愫 2020-11-29 07:01

I need to calculate the age of a \"customer\" from their date of birth.

I have tried to use the following:

DATEDIFF(year, customer.dob, \"2010

13条回答
  •  伪装坚强ぢ
    2020-11-29 07:45

    DELIMITER $$ DROP FUNCTION IF EXISTS `test`.`__AGE` $$
        CREATE FUNCTION `_AGE`(in_dob datetime) RETURNS VARCHAR(100)
            NO SQL
        BEGIN
           DECLARE l_age VARCHAR(100);
           DECLARE YEARS INT(11);
           DECLARE MONTHS INT(11);
           DECLARE DAYS INT(11);
           DECLARE DIFFS FLOAT;
    
    
           SET DIFFS=DATEDIFF(CURRENT_DATE(),in_dob) /365.25;
           SET YEARS=FLOOR(DIFFS) ;
           SET MONTHS=FLOOR((DIFFS - YEARS)*365.25/30.4375) MOD 12;
           SET DIFFS=((DIFFS - YEARS)*365.25/30.4375);
           SET DAYS=CEIL(((DIFFS-MONTHS)*30.4375)) MOD 31;
           RETURN(CONCAT(YEARS, " Year ",MONTHS," Month ",DAYS," Days"));
    
        END $$
    DELIMITER ;
    
    SELECT __Age(CAST('1980-07-16' AS DATE));
    

提交回复
热议问题