From: | Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> |
---|---|
To: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
Cc: | Gurjeet Singh <gurjeet(at)singh(dot)im>, Postgres Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Proposal: Division operator for (interval / interval => double precision) |
Date: | 2024-06-24 08:47:06 |
Message-ID: | CAExHW5ustu5CQJNqp6MA+R+7Srik_6iqDco7TAos4Rgv4s-74g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Jun 24, 2024 at 2:04 PM Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Dave Page | 2024-06-24 08:54:51 | Re: Meson far from ready on Windows |
Previous Message | Dave Page | 2024-06-24 08:44:57 | Re: Meson far from ready on Windows |