## Re: extract or date_part on an interval? How many e

From: Tom Lane Bryce Nesbitt pgsql-sql(at)postgresql(dot)org Re: extract or date_part on an interval? How many e 2008-01-28 03:10:40 16843.1201489840@sss.pgh.pa.us (view raw or whole thread) 2008-01-28 02:30:59 from Bryce Nesbitt  2008-01-28 02:56:58 from Adrian Klaver  2008-01-28 03:10:40 from Tom Lane   2008-01-28 04:51:32 from Bryce Nesbitt    2008-01-28 05:19:04 from Michael Glaesemann pgsql-sql
```Bryce Nesbitt <bryce1(at)obviously(dot)com> writes:
> Hmm.  Seemed so simple.  But how do I get the number of years an
> interval represents?  extract is clearly the wrong way:

There is nothing simple about datetime calculations, ever :-(

Let me exhibit why this particular case is not as simple as you
could wish:

regression=# select '2007-02-01'::timestamp + interval '1 year';
?column?
---------------------
2008-02-01 00:00:00
(1 row)

regression=# select '2007-02-01'::timestamp + interval '365 days';
?column?
---------------------
2008-02-01 00:00:00
(1 row)

regression=# select '2008-02-01'::timestamp + interval '1 year';
?column?
---------------------
2009-02-01 00:00:00
(1 row)

regression=# select '2008-02-01'::timestamp + interval '365 days';
?column?
---------------------
2009-01-31 00:00:00
(1 row)

That is, there isn't any fixed conversion factor between N days
and N years, so the interval datatype treats them as incommensurate.

If you're willing to settle for an approximate answer, you can
do extract(epoch from interval) and then divide by however many
seconds you want to believe are in a year.  This will give various
wrong answers in various corner cases, but I'm not sure there is

regards, tom lane

```

### pgsql-sql by date

 Next: From: Bryce Nesbitt Date: 2008-01-28 04:51:32 Subject: Re: extract or date_part on an interval? How many e Previous: From: Adrian Klaver Date: 2008-01-28 02:56:58 Subject: Re: extract or date_part on an interval? How many e