问题描述
如何在Postgresql中检查给定年份是否为leap年??
select extract(year from hiredate)% 4 = 0 from emp
解决方法
您必须将提取的年份转换为整数。
select extract(year from hiredate)::integer % 4 = 0 from emp
但是,that年的公式不正确。除每100个间隔的每400个间隔之外,它是每四年一次。1900年不是a年,而是2000年。
create function is_leap_year(timestamp)
returns boolean as $$
declare y integer;
begin
y := extract(year from $1);
return (y % 4 = 0) and (y % 100 <> 0 or y % 400 = 0);
end
$$ language plpgsql;