No. Your example work only for those values.
Try this:
SELECT extract( month from justify_days( timestamp '2016-02-29' -timestamp '2016-01-31') );date_part
----------- 0
(1 row)
select extract( month from justify_days( timestamp '2016-02-29' -timestamp '2016-01-31'), timestamp '2016-01-31'
);date_part
----------- 1
(1 row)
12.10.2017, 12:15, "Arthur Zakirov" <a.zakirov@postgrespro.ru>:
> On Wed, Oct 11, 2017 at 10:35:12AM +0000, kes-kes@yandex.ru wrote:
>> >Adjust interval so 30-day time periods are represented as months
>>
>> https://www.postgresql.org/docs/9.6/static/functions-datetime.html
>
> Yes, it seems that it is because timestamp operations return '29 days':
>
> =# SELECT timestamp '2016-01-31' +interval '1 month' -timestamp '2016-01-31';
> ?column?
> ----------
> 29 days
>
> You can also try the following, maybe it is appropriate for you:
>
> =# SELECT timestamp '2016-01-31' -timestamp '2016-01-31' +interval '1 month';
> ?column?
> ----------
> 1 mon
>
> =# SELECT extract( month from justify_days( timestamp '2016-01-31'
> -timestamp '2016-01-31' +interval '1 month') );
> date_part
> -----------
> 1
>
> --
> Arthur Zakirov
> Postgres Professional: http://www.postgrespro.com
> Russian Postgres Company
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs