Mega Code Archive

 
Categories / MySQL / Procedure Function
 

Find out the age with procedure

DELIMITER $$ CREATE PROCEDURE AGE    (IN  START_DATE  DATE,     IN  END_DATE    DATE,     OUT YEARS       INTEGER,     OUT MONTHS      INTEGER,     OUT DAYS        INTEGER) BEGIN    DECLARE NEXT_DATE, PREVIOUS_DATE DATE;    SET YEARS = 0;    SET PREVIOUS_DATE = START_DATE;    SET NEXT_DATE = START_DATE + INTERVAL 1 YEAR;    WHILE NEXT_DATE < END_DATE DO       SET YEARS = YEARS + 1;       SET PREVIOUS_DATE = NEXT_DATE;       SET NEXT_DATE = NEXT_DATE + INTERVAL 1 YEAR;    END WHILE;    SET MONTHS = 0;    SET NEXT_DATE = PREVIOUS_DATE + INTERVAL 1 MONTH;    WHILE NEXT_DATE < END_DATE DO       SET MONTHS = MONTHS + 1;       SET PREVIOUS_DATE = NEXT_DATE;       SET NEXT_DATE = NEXT_DATE + INTERVAL 1 MONTH;    END WHILE;    SET DAYS = 0;    SET NEXT_DATE = PREVIOUS_DATE + INTERVAL 1 DAY;    WHILE NEXT_DATE <= END_DATE DO       SET DAYS = DAYS + 1;       SET PREVIOUS_DATE = NEXT_DATE;       SET NEXT_DATE = NEXT_DATE + INTERVAL 1 DAY;    END WHILE; END$$ DELIMITER ; SET @START = '1991-01-12' ; SET @END = '1999-07-09' ; CALL AGE (@START, @END, @YEAR, @MONTH, @DAY) ; SELECT @START, @END, @YEAR, @MONTH, @DAY;