Få ut ålder från personummer i sql

Har skrivit några funktioner för att ta ut ålder ifrån ett personnummer i sql som jag tänkte dela med mig av. Hoppas de kommer till nytta.

CREATE FUNCTION get_date_from_social_security_number(social_security_number
   VARCHAR(11)) RETURNS DATE DETERMINISTIC
BEGIN
   DECLARE y INT;
   IF LEFT(social_security_number, 2) <= LEFT(YEAR(SYSDATE()), 2) THEN
      SET y = CONCAT(20, LEFT(social_security_number, 2));
   ELSE
      SET y = CONCAT(19, LEFT(social_security_number, 2));
   END IF;
   RETURN STR_TO_DATE(CONCAT_WS('-', y, MID(social_security_number, 3, 2),
      MID(social_security_number, 5, 2)), '%Y-%m-%d');
END;

CREATE FUNCTION get_age_from_date(d DATE) RETURNS INT DETERMINISTIC
BEGIN
   RETURN FLOOR((CURDATE() - d)/10000);
END;

CREATE FUNCTION get_age_from_social_security_number(social_security_number
   VARCHAR(11)) RETURNS INT DETERMINISTIC
BEGIN
   RETURN get_age_from_date(get_date_from_social_security_number
      (social_security_number));
END;

Nu får du fram åldern genom

SELECT get_age_from_social_security_number('790628-0000');

Edit 2011-10-24
Koden finns även på Github