| От | 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 по дате отправления:
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера