delimiter //
DROP FUNCTION IF EXISTS monthdiff;
CREATE FUNCTION monthdiff(first TIMESTAMP, second TIMESTAMP)
RETURNS INTEGER
BEGIN
DECLARE tmp TIMESTAMP;
DECLARE yearOfFirst INT;
DECLARE yearOfSecond INT;
DECLARE monthOfFirst INT;
DECLARE monthOfSecond INT;
DECLARE dayOfFirst INT;
DECLARE dayOfSecond INT;
DECLARE yearInterval INT;
DECLARE monthInterval INT;
IF first < second THEN
SET tmp=first;
SET first=second;
SET second=tmp;
END IF;
SET yearOfFirst = YEAR(first);
SET yearOfSecond = YEAR(second);
SET monthOfFirst = MONTH(first);
SET monthOfSecond = MONTH(second);
SET dayOfFirst = DAYOFMONTH(first);
SET dayOfSecond = DAYOFMONTH(second);
SET yearInterval = yearOfFirst - yearOfSecond;
IF monthOfFirst < monthOfSecond OR (monthOfFirst = monthOfSecond AND dayOfFirst < dayOfSecond) THEN
SET yearInterval = yearInterval - 1;
END IF;
SET monthInterval = (monthOfFirst + 12) - monthOfSecond;
IF (dayOfFirst < dayOfSecond) THEN
SET monthInterval = monthInterval - 1;
END IF;
SET monthInterval = monthInterval % 12;
RETURN yearInterval * 12 + monthInterval;
END//
delimiter;
DROP FUNCTION IF EXISTS monthdiff;
CREATE FUNCTION monthdiff(first TIMESTAMP, second TIMESTAMP)
RETURNS INTEGER
BEGIN
DECLARE tmp TIMESTAMP;
DECLARE yearOfFirst INT;
DECLARE yearOfSecond INT;
DECLARE monthOfFirst INT;
DECLARE monthOfSecond INT;
DECLARE dayOfFirst INT;
DECLARE dayOfSecond INT;
DECLARE yearInterval INT;
DECLARE monthInterval INT;
IF first < second THEN
SET tmp=first;
SET first=second;
SET second=tmp;
END IF;
SET yearOfFirst = YEAR(first);
SET yearOfSecond = YEAR(second);
SET monthOfFirst = MONTH(first);
SET monthOfSecond = MONTH(second);
SET dayOfFirst = DAYOFMONTH(first);
SET dayOfSecond = DAYOFMONTH(second);
SET yearInterval = yearOfFirst - yearOfSecond;
IF monthOfFirst < monthOfSecond OR (monthOfFirst = monthOfSecond AND dayOfFirst < dayOfSecond) THEN
SET yearInterval = yearInterval - 1;
END IF;
SET monthInterval = (monthOfFirst + 12) - monthOfSecond;
IF (dayOfFirst < dayOfSecond) THEN
SET monthInterval = monthInterval - 1;
END IF;
SET monthInterval = monthInterval % 12;
RETURN yearInterval * 12 + monthInterval;
END//
delimiter;