我需要在我的年龄计算功能中使用条件但是如何在'比较一下这个人的年龄是否已经“转变”。或者'转身'?
这是我的功能,不计算'转向'年龄;
CREATE OR REPLACE FUNCTION agecalculator(i date) RETURNS integer AS $$
BEGIN
RETURN EXTRACT(YEAR FROM NOW()) - EXTRACT(YEAR FROM i);
END;
$$ LANGUAGE plpgsql;
这就是我想要检查Bday是否通过的原因;
CREATE OR REPLACE FUNCTION agecalculator(i date) RETURNS integer AS $$
DECLARE age integer;
BEGIN
age = EXTRACT(YEAR FROM NOW()) - EXTRACT(YEAR FROM i) - 1;
SET age = CASE
WHEN now_month = i_month AND now_day <= i_day
THEN age = age + 1
WHEN now_month < i_month
THEN age = age + 1
END;
RETURN age;
END;
$$ LANGUAGE plpgsql;
为什么SQL如此难以预料?先感谢您!
答案 0 :(得分:0)
试试这个
CREATE OR REPLACE FUNCTION agecalculator(i date) RETURNS integer AS $$
DECLARE age integer;
now_month integer;
now_day integer;
i_month integer;
i_day integer;
BEGIN
now_month := date_part('month',now());
now_day := date_part('day',now());
i_month := date_part('month',i);
i_day := date_part('day',i);
age = EXTRACT(YEAR FROM NOW()) - EXTRACT(YEAR FROM i) - 1;
age := CASE WHEN now_month = i_month AND now_day <= i_day
THEN age + 1
WHEN now_month < i_month
THEN age + 1
END;
RETURN age;
END;
$$ LANGUAGE plpgsql;