El 20 de mayo de 2009 8:16, Miguel Angel <mvillago...@sayab.com.mx>escribió:
> Buenos días. > > Quisiera preguntar si hay forma de saber la diferencia de tiempo que hay > entre dos fechas expresada en meses como por ejemplo: > > Si tengo la fecha de inicio '2008-12-15' y la fecha '2009-01-01' > quisiera poder obtener el resultado de 1 mes de diferencia; no es un > resultado correcto en diferencia de días pero si en meses y eso es lo > que necesito. > > Hay forma de poder obtener algo así en Postgres o es necesario cree una > función o lógica para ello? > > Soñando algo como: > Fecha_final | Fecha_inicial | diferencia_meses > '2010-01-01' | '2008-12-31' | 13 > '2009-02-15' | '2008-12-31' | 2 > '2011-05-30' | '2008-02-20' | 39 > > Podrias hacer uso de la función age, pero antes tienes que convertir tus fechas para ponerlas al dia de inicio del mes, por ejemplo: postg...@test[localhost]=# select age(date '2009-01-01', date '2008-12-01'); age ------- 1 mon (1 fila) postg...@test[localhost]=# select age(date '2010-01-01', date '2008-12-01'); age -------------- 1 year 1 mon (1 fila) postg...@test[localhost]=# select age(date '2009-02-01', date '2008-12-01'); age -------- 2 mons (1 fila) postg...@test[localhost]=# select age(date '2011-05-01', date '2008-02-01'); age ---------------- 3 years 3 mons (1 fila) Solo faltaria hacer la converisión de años a meses.