[Pgsql-ayuda] operaciones con fechas

Alvaro Herrera alvherre@dcc.uchile.cl
Fri, 14 Mar 2003 17:37:46 -0400


On Fri, Mar 14, 2003 at 04:39:43PM -0300, Fernando Papa wrote:

> En oracle, si yo resto 2 fechas me devuelve un numero, su parte entera
> es la cantidad de dias que hay entre las dos fechas. Pero en
> postgresql, si resto 2 fechas me devuelve un tipo de dato "interval"
> que no se como manejarlo, o mejor dicho, como convertirlo a numerico.
> Concretamente, yo tengo una fecha de nacimiento y necesito saber la
> edad de la persona, con lo cual le resto el now() a la fecha de
> nacimiento... si estuviera en oracle, la diferencia la divido por 365
> y tengo los años... pero en postgres me un tipo de dato interval... no
> se como hacerlo.

Usa extract():

alvh=> select extract(days from now() - '1976-10-28') / 365.25;
     ?column?     
------------------
 26.3737166324435
(1 row)

o age():

alvh=> select age('1976-10-28'::date);
              age              
-------------------------------
 26 years 4 mons 17 days 01:00
(1 row)

O combinalos:

alvh=> select extract(years from age('1976-10-28'::date));
 date_part 
-----------
        26
(1 row)

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"La realidad se compone de muchos sueños, todos ellos diferentes,
pero en cierto aspecto, parecidos..." (Yo, hablando de sueños eróticos)