On Mon, Jun 24, 2024 at 2:04 PM Laurenz Albe <laurenz.a...@cybertec.at> wrote:
> On Sun, 2024-06-23 at 17:57 -0700, Gurjeet Singh wrote: > > Is there a desire to have a division operator / that takes dividend > > and divisor of types interval, and results in a quotient of type > > double precision. > > > > This would be helpful in calculating how many times the divisor > > interval can fit into the dividend interval. > > > > To complement this division operator, it would be desirable to also > > have a remainder operator %. > > > > For example, > > > > ('365 days'::interval / '5 days'::interval) => 73 > > ('365 days'::interval % '5 days'::interval) => 0 > > > > ('365 days'::interval / '3 days'::interval) => 121 > > ('365 days'::interval % '3 days'::interval) => 2 > > I think that is a good idea in principle, but I have one complaint, > and one thing should be discussed. > > The complaint is that the result should be double precision or numeric. > I'd want the result of '1 minute' / '8 seconds' to be 7.5. > That would match how the multiplication operator works. > > What should be settled is how to handle divisions that are not well > defined. > For example, what is '1 year' / '1 day'? > - 365.24217, because that is the number of solar days in a solar year? > - 365, because we don't consider leap years? > - 360, because we use the usual conversion of 1 month -> 30 days? > We will need to go back to first principles, I guess. Result of division is quotient, which is how many times a divisor can be subtracted from dividend, and remainder, which is the what remains after so many subtractions. Since day to hours and month to days conversions are not constants, interval/interval will result in an integer quotient and interval remainder. That looks painful. -- Best Wishes, Ashutosh Bapat