test=# create table birthdays(id serial primary key, name text, birthday date);
CREATE TABLE
test=*# insert into birthdays select s, 'name ' || s::text, '1980-01-01'::date + '1day'::interval * random()*10000 from generate_series(1, 100) s;
INSERT 0 100
test=*# select * from birthdays limit 15;
id | name | birthday
----+---------+------------
1 | name 1 | 1988-02-14
2 | name 2 | 1991-11-01
3 | name 3 | 1993-10-12
4 | name 4 | 1993-09-28
5 | name 5 | 1987-11-23
6 | name 6 | 1986-09-22
7 | name 7 | 1991-06-15
8 | name 8 | 2005-03-27
9 | name 9 | 1986-01-11
10 | name 10 | 1995-03-13
11 | name 11 | 1995-10-28
12 | name 12 | 1981-05-17
13 | name 13 | 1983-07-23
14 | name 14 | 1991-01-31
15 | name 15 | 1990-09-24
(15 Zeilen)
test=*# select * from birthdays where extract(year from age(birthday)) != extract(year from age(current_date + 30, birthday));
id | name | birthday
-----+----------+------------
12 | name 12 | 1981-05-17
22 | name 22 | 1993-05-27
47 | name 47 | 1983-05-06
52 | name 52 | 1986-05-01
67 | name 67 | 1994-05-17
84 | name 84 | 1980-05-09
89 | name 89 | 1987-05-02
100 | name 100 | 1985-05-27
(8 Zeilen)
test=*#