Re: Fwd: [BUGS] BUG #14850: Implement optinal additinal parameter for 'justify' date/time function

From: Brian Dunavant <brian(at)omniti(dot)com>
To: KES <kes-kes(at)yandex(dot)ru>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Fwd: [BUGS] BUG #14850: Implement optinal additinal parameter for 'justify' date/time function
Date: 2017-10-12 14:37:40
Message-ID: CAJTy2ensFY8T3dQ4tYBidx0_hwq+FTWgoetGhy1_BADxHuvr8w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-general pgsql-hackers

A 'month' is an abstract measurement of time. Sometimes it's 29 days, 30,
or 31. You cannot say "I have 30 days, how many months is that?" because
the answer is "it depends".

<date> - <date> gives you an interval in days. In your example, you took
Jan 31 2016 and added "1 month". Postgres says "I know feb 2016 is 29
days" and did it automatically for you. When you then subtracted Jan 31
2016, you now have "29 days". Postgres can no longer say "that is 1
month" because you cannot go that direction.

You are also using extract(month from X) incorrectly if you want the number
of months between any time period. That will only return a value between
0 and 11.

It will also be difficult because you are starting from a random day in the
month, making it hard to really know what you mean. Postgres' age()
function may be able to help you with 'months'.

flpg=# select age( '2016-02-01'::timestamp, '2016-01-01'::timestamp );
age
-------
1 mon

flpg=# select age( '2016-02-29'::timestamp, '2016-01-31'::timestamp );
age
---------
29 days
(1 row)

flpg=# select age( '2016-03-01'::timestamp, '2016-01-31'::timestamp );
age
-------------
1 mon 1 day

On Thu, Oct 12, 2017 at 4:00 AM, KES <kes-kes(at)yandex(dot)ru> wrote:

>
>
> -------- Пересылаемое сообщение--------
> 11.10.2017, 17:12, "Pavel Stehule" <pavel(dot)stehule(at)gmail(dot)com>:
>
> Hi
>
> 2017-10-11 12:35 GMT+02:00 <kes-kes(at)yandex(dot)ru>:
>
> The following bug has been logged on the website:
>
> Bug reference: 14850
> Logged by: Eugen Konkov
> Email address: kes-kes(at)yandex(dot)ru
> PostgreSQL version: 10.0
> Operating system: Linux mint 18: Linux work 4.4.0-57-generic #78-Ubu
> Description:
>
> Hi. I try to do next math:
>
> select extract( month from justify_days( timestamp '2016-01-31' +interval
> '1
> month' -timestamp '2016-01-31') );
> date_part
> -----------
> 0
> (1 row)
>
> I expect `1` but get `0`. But here everything is right:
>
> >Adjust interval so 30-day time periods are represented as months
>
> https://www.postgresql.org/docs/9.6/static/functions-datetime.html
>
> But with ability to setup justify date the math will be more sharp.
>
> Please implement next feature:
>
> select extract( month from justify_days( timestamp '2016-01-31' +interval
> '1
> month' -timestamp '2016-01-31'), timestamp '2016-01-31' );
> date_part
> -----------
> 1
> (1 row)
>
> This is useful when I try to calculate how much month are left between
> service start and end dates.
>
>
> This is not the bug, so pgsql-hackers, pgsql-general are better places for
> this discussion
>
> I am thinking so your request has sense, and should be registered in ToDo
> list https://wiki.postgresql.org/wiki/Todo
>
> You can try to connect people from PostgreSQL Pro company for
> implementation.
>
> Regards
>
> Pavel
>
>
> Thank you.
>
>
> --
> Sent via pgsql-bugs mailing list (pgsql-bugs(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-bugs
>
>
>
> -------- Конец пересылаемого сообщения --------
>

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2017-10-12 14:55:50 Re: Combination of ordered-set aggregate function terminates JDBC connection on PostgreSQL 9.6.5
Previous Message Heikki Linnakangas 2017-10-12 13:59:01 Re: Combination of ordered-set aggregate function terminates JDBC connection on PostgreSQL 9.6.5

Browse pgsql-general by date

  From Date Subject
Next Message Nic Pottier 2017-10-12 14:48:42 EAV Designs for Multi-Tenant Applications
Previous Message Scott Marlowe 2017-10-12 13:25:47 Re: core system is getting unresponsive because over 300 cpu load

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2017-10-12 14:44:58 Re: pgsql: Improve performance of SendRowDescriptionMessage.
Previous Message Robert Haas 2017-10-12 14:30:27 Re: Fix a typo in execReplication.c