Re: Re: Data type confusion - Mailing list pgsql-sql

From Tom Lane
Subject Re: Re: Data type confusion
Date
Msg-id 7212.997053557@sss.pgh.pa.us
Whole thread Raw
In response to Re: Data type confusion  (Allan Engelhardt <allane@cybaea.com>)
Responses Re: Re: Data type confusion
List pgsql-sql
Allan Engelhardt <allane@cybaea.com> writes:
> I don't think it makes conceptual sense to divide intervals....

It is kinda bogus, given the underlying semantics of intervals
(integer months plus float seconds).  The problem already arises
for the existing interval * float8 and interval / float8 operators,
though, so it'd be easy enough to make an interval / interval operator
that is consistent with them.  What those operators do is to convert
any fractional-month result into seconds at an arbitrary conversion
factor of 30 days to the month.  For example, consider

regression=# select '5 months 9 days'::interval;  ?column?    
---------------5 mons 9 days
(1 row)

regression=# select '5 months 9 days'::interval * 0.5;      ?column?       
----------------------2 mons 19 days 12:00
(1 row)

The initial product is effectively 2.5 months plus 4.5 days,
and then we translate the .5 months into 15 days.

This is pretty grotty, and AFAIK not documented anywhere --- I found it
out by looking at the C code for these operators.  But I'm not sure
how to do better.
        regards, tom lane


pgsql-sql by date:

Previous
From: "Josh Berkus"
Date:
Subject: Re: Data type confusion
Next
From: Peter Eisentraut
Date:
Subject: Re: Re: Data type confusion