Thread: Calculating the age of a person
I have a table containing the birthdays of various persons. The target is to compute the age of a persons. persons=# SELECT age(birth), * FROM persons LIMIT 1; age | id | name | birth | gender | income -------------------------------+----+--------+------------+--------+-------- 31 years 4 mons 16 days 23:00 | 1 | Albert | 1970-01-01 | m | 35000 (1 row) When I use age() I don't get full years. Is there an easy way to round ::reltime off or up without writing a function. Is there any possibility to use plain SQL only? Hans
You are probably looking for date_part(). E.g. SELECT date_part('year',age(birth)),* FROM persons LIMIT 1; Troy > > I have a table containing the birthdays of various persons. The target > is to compute the age of a persons. > > persons=# SELECT age(birth), * FROM persons LIMIT 1; > age | id | name | birth | gender | > income > -------------------------------+----+--------+------------+--------+-------- > > 31 years 4 mons 16 days 23:00 | 1 | Albert | 1970-01-01 | m | > 35000 > (1 row) > > When I use age() I don't get full years. Is there an easy way to round > ::reltime off or up without writing a function. Is there any possibility > to use plain SQL only? > > Hans > > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org >
Or you could use date_trunc() in the same way as date_part() if you want an interval instead.. SELECT date_trunc('year',age(birth)),* FROM persons LIMIT 1; On Fri, 18 May 2001, tjk@tksoft.com wrote: > You are probably looking for date_part(). > > E.g. > > SELECT date_part('year',age(birth)),* FROM persons LIMIT 1; > > > Troy > > > > > > > I have a table containing the birthdays of various persons. The target > > is to compute the age of a persons. > > > > persons=# SELECT age(birth), * FROM persons LIMIT 1; > > age | id | name | birth | gender | > > income > > -------------------------------+----+--------+------------+--------+-------- > > > > 31 years 4 mons 16 days 23:00 | 1 | Albert | 1970-01-01 | m | > > 35000 > > (1 row) > > > > When I use age() I don't get full years. Is there an easy way to round > > ::reltime off or up without writing a function. Is there any possibility > > to use plain SQL only? > > > > Hans > > > > > > ---------------------------(end of broadcast)--------------------------- > > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly >
Hans-Jürgen Schönig wrote: > I have a table containing the birthdays of various persons. The target > is to compute the age of a persons. > > persons=# SELECT age(birth), * FROM persons LIMIT 1; > age | id | name | birth | gender | > income > -------------------------------+----+--------+------------+--------+-------- > > 31 years 4 mons 16 days 23:00 | 1 | Albert | 1970-01-01 | m | > 35000 > (1 row) > > When I use age() I don't get full years. Is there an easy way to round > ::reltime off or up without writing a function. Is there any possibility > to use plain SQL only? > > Hans > > > ---------------------------(end of broadcast)--------------------------- > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org Hey Hans try usting date_part function.... select date_part('year',birth).... Regards -- Najm Hashmi Tel:514-271-9791 www.mondo-live.com www.flipr.com