On Tue, May 13, 2008 at 12:56 AM, Achilleas Mantzios <achill@xxxxxxxxxxxxxxxxxxxxx> wrote: > Στις Monday 12 May 2008 18:09:11 ο/η Tom Lane έγραψε: >> Achilleas Mantzios <achill@xxxxxxxxxxxxxxxxxxxxx> 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.