Re: Date calculation produces wrong output with 7.02

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Date calculation produces wrong output with 7.02
Дата
Msg-id 28656.982950040@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Date calculation produces wrong output with 7.02  (pgsql-bugs@postgresql.org)
Список pgsql-bugs
Mark Stosberg (mark@summersault.com) writes:

> [PostgreSQL 7.0.2 on i686-pc-linux-gnu, compiled by gcc 2.96]
> cascade=> select date(CURRENT_DATE + ('30 days'::reltime));
>       date
> ----------
> 9097-10-20

Ugh.  What is happening here is that there is no '+' operator between
types date and reltime, but there is one between date and int4 (with
behavior of adding that many days to the date).  And reltime is
considered binary-compatible with int4, so you get

select date(CURRENT_DATE + ('30 days'::reltime)::int4);

Now '30 days'::reltime::int4 yields 2592000, so you get a silly final
result.

The correct query for Mark is

    select date(CURRENT_DATE + ('30 days'::interval));

but I wonder whether the binary equivalence between reltime and int4
might not be ill-advised.  Thomas, any thoughts here?

            regards, tom lane

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

Предыдущее
От: pgsql-bugs@postgresql.org
Дата:
Сообщение: Date calculation produces wrong output with 7.02
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Turkish locale bug