Обсуждение: Calculating the age of a person

Поиск
Список
Период
Сортировка

Calculating the age of a person

От
Hans-Jürgen Schönig
Дата:
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



Re: Calculating the age of a person

От
"tjk@tksoft.com"
Дата:
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
> 



Re: Calculating the age of a person

От
Cedar Cox
Дата:
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
> 



Re: Calculating the age of a person

От
Najm Hashmi
Дата:
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