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
Nya kommentarer