## Re: how to get a number of seconds in some interval ?

From: Achilleas Mantzios "Scott Marlowe" pgsql-admin(at)postgresql(dot)org, "Tom Lane" , "Julius Tuskenis" Re: how to get a number of seconds in some interval ? 2008-05-13 08:41:00 200805131141.01422.achill@matrix.gatewaynet.com (view raw or flat) 2008-05-12 13:44:16 from Julius Tuskenis  2008-05-12 14:24:38 from Achilleas Mantzios   2008-05-12 15:01:34 from Achilleas Mantzios    2008-05-12 15:09:11 from Tom Lane     2008-05-13 06:20:09 from Julius Tuskenis     2008-05-13 06:56:50 from Achilleas Mantzios      2008-05-13 08:22:28 from "Scott Marlowe"       2008-05-13 08:41:00 from Achilleas Mantzios       2008-05-13 08:42:41 from Shane Ambler        2008-05-13 08:48:32 from "Scott Marlowe"      2008-05-13 14:15:27 from Tom Lane pgsql-admin
```Στις Tuesday 13 May 2008 11:22:28 ο/η Scott Marlowe έγραψε:
> On Tue, May 13, 2008 at 12:56 AM, Achilleas Mantzios
> <achill(at)matrix(dot)gatewaynet(dot)com> wrote:
> >  Monday 12 May 2008 18:09:11 / Tom Lane :
> >> Achilleas Mantzios <achill(at)matrix(dot)gatewaynet(dot)com> writes:
> >> >  Monday 12 May 2008 17:32:39 / Julius Tuskenis :
> >> >> do you know why division of intervals was not implemented? As I see it -
> >> >> there should be an easy way to do so. '1 hour 30 minutes' / '1 hour' =
> >> >> 1.5 .... Seems straight forward...
> >> >>
> >> > No idea why. However as you pose it,it makes sense.
> >>
> >> No, it doesn't really, because intervals contain multiple components.
> >> What would you define as the result of
> >>       '1 month 1 hour' / '1 day'
> >> bearing in mind that the number of days per month is not fixed, and
> >> neither is the number of hours per day?
> >>
> >
> > SELECT extract(epoch from '1 month'::interval)/(60*60*24) as "Days in 1 month interval";
> >  Days in 1 month interval
> > --------------------------
> >                       30
> > (1 row)
> > So it seems that the arbitary assumption of (1 month=30 days, and 1 day = 24 hours) has already been made
> > in the extract function.
>
> True.  But that's only because it doesn't have a date to work against.
>  If you run:
>
> select '2007-02-01 12:00:00'::timestamp + '1 month'::interval;
> you get: 2007-03-01 12:00:00
>
> If you run:
> select '2007-03-01 12:00:00'::timestamp + '1 month'::interval;
> you get:  2007-04-01 12:00:00
>
> Then, if we run:
>  select ('2007-03-01 12:00:00'::timestamp + '1 month'::interval) -
> '2007-03-01 12:00:00'::timestamp;
> we get: 31 days
>
> But if we run:
>  select ('2007-02-01 12:00:00'::timestamp + '1 month'::interval) -
> '2007-02-01 12:00:00'::timestamp;
> we get: 28 days
>
> So, I'm not sure how many days a month has.
>
> But your point is valid that given no date to compare to, an interval
> of 1 month gets translated to 30 days.  I can also see a lot of people
> showing up doing fancy interval math THEN wondering why it changes
> when you put a timestamp in the middle of it.
>

Thanx for this well written explanation!

--
Achilleas Mantzios

```