Re: Proposal: Division operator for (interval / interval => double precision)

Поиск
Список
Период
Сортировка
От Ashutosh Bapat
Тема Re: Proposal: Division operator for (interval / interval => double precision)
Дата
Msg-id CAExHW5ustu5CQJNqp6MA+R+7Srik_6iqDco7TAos4Rgv4s-74g@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Proposal: Division operator for (interval / interval => double precision)  (Laurenz Albe <laurenz.albe@cybertec.at>)
Список pgsql-hackers


On Mon, Jun 24, 2024 at 2:04 PM Laurenz Albe <laurenz.albe@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

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Dave Page
Дата:
Сообщение: Re: Meson far from ready on Windows
Следующее
От: Dave Page
Дата:
Сообщение: Re: Meson far from ready on Windows