martes, 24 de julio de 2012

Get old in PostgreSQL


-- select * from fnt_obtener_edad('1986-11-29');

create or replace function fnt_obtener_edad(fecha_nac date)
returns integer as $$
declare
    -- Datos de la fecha de nacimiento
    ano_nac integer;
    mes_nac integer;
    dia_nac integer;
   
    -- Datos de la fecha actual
    ano_act integer;
    mes_act integer;
    dia_act integer;
   
    edad integer;
   
    b boolean;
begin
    ano_act = extract(year from getdate());
    mes_act = extract(month from getdate());
    dia_act = extract(day from getdate());
   
    ano_nac = extract(year from fecha_nac);
    mes_nac = extract(month from fecha_nac);
    dia_nac = extract(day from fecha_nac);
   
    edad = ano_act - ano_nac;
   
    if(mes_act > mes_nac)then
    b = true;
    else
    b = false;
    end if;
   
    if(mes_act = mes_nac)then
if(dia_act >= dia_nac)then
        b = true;
        else
        b = false;
        end if;
    end if;
   
    if(b = true)then
    edad = edad;
    else
    edad = edad - 1;
    end if;
   
    return edad;
end;
$$ language plpgsql;

No hay comentarios:

Publicar un comentario