Обсуждение: 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