BEGIN DECLARE years INT;
DECLARE months INT;
DECLARE days INT;
DECLARE current_year INT;
DECLARE current_month INT;
DECLARE current_day INT;
DECLARE agemonth INT;
DECLARE year_diff INT;
DECLARE month_diff INT;
DECLARE day_diff INT;
DECLARE yearstring CHAR(6);
DECLARE monthstring CHAR(7);
DECLARE daystring CHAR(10);
SELECT YEAR(birth) INTO years;
SELECT MONTH(birth) INTO months;
SELECT DAY(birth) INTO days;
SELECT (YEAR(vdate)-YEAR(birth)) INTO year_diff;
SELECT (
CASE SIGN((DATE_FORMAT(vdate,'%m')-DATE_FORMAT(birth,'%m')))
WHEN 0 THEN 0
WHEN -1 THEN DATE_FORMAT(vdate,'%m') +12 - DATE_FORMAT(birth,'%m')
WHEN 1 THEN DATE_FORMAT(vdate,'%m') - DATE_FORMAT(birth,'%m')
END)
INTO month_diff;
if SIGN((DATE_FORMAT(vdate,'%m')-DATE_FORMAT(birth,'%m'))) = -1 THEN SET year_diff = year_diff - 1;END IF;
SELECT (
CASE SIGN(DATE_FORMAT(vdate,'%d') - DATE_FORMAT(birth,'%d'))
WHEN 0 THEN 0
WHEN -1 THEN (DATE_FORMAT(vdate, '%d') +30 - DATE_FORMAT(birth, '%d'))
WHEN 1 THEN (DATE_FORMAT(vdate,'%d') - DATE_FORMAT(birth,'%d'))
END)
INTO day_diff;
if SIGN(DATE_FORMAT(vdate,'%d') - DATE_FORMAT(birth,'%d')) = -1 THEN SET month_diff = month_diff - 1;END IF;
if (day_diff > 15) THEN SET month_diff = month_diff + 1; END IF;
SET agemonth = (year_diff*12) + month_diff;
RETURN agemonth;
END