extract('epoch' from age()) returning wrong number of seconds

Поиск
Список
Период
Сортировка
От Peter Nelson
Тема extract('epoch' from age()) returning wrong number of seconds
Дата
Msg-id 29D4F821F6A75941B4FE0C0AAAE0E7809CA1E6D6@ex01.code42.local
обсуждение исходный текст
Ответы Re: extract('epoch' from age()) returning wrong number of seconds  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The forth column in this query is returning the wrong value.

The last two columns in this query should return the same value, 5270400 (t=
he number of seconds in 61 days). Using simple subtraction works fine, but =
using the age() function it returns 5184000 seconds (60 days). This same be=
havior can be found using other start/end dates and interval lengths, somet=
imes age() returns too many seconds, sometimes too few. I did not get any f=
ailures below 60 days, but I did not do an exhaustive test of all interval =
values and a range of start/end dates.



 > select version();
                                           version
---------------------------------------------------------------------------=
-------------------
 PostgreSQL 9.2.6 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.=
2-5) 4.7.2, 64-bit
(1 row)

Time: 41.898 ms
 > select extract('epoch' from      ('2013-12-31'::date) - ('2013-12-31'::d=
ate - '5184000 seconds'::interval))  as right_answer_subtraction_60_days
         ,extract('epoch' from age (('2013-12-31'::date) , ('2013-12-31'::d=
ate - '5184000 seconds'::interval))) as right_answer_age_60_days
         ,extract('epoch' from      ('2013-12-31'::date) - ('2013-12-31'::d=
ate - '5270400 seconds'::interval))  as right_answer_subtraction_61_days
         ,extract('epoch' from age (('2013-12-31'::date) , ('2013-12-31'::d=
ate - '5270400 seconds'::interval))) as wrong_answer_age_61_days;
 right_answer_subtraction_60_days | right_answer_age_60_days | right_answer=
_subtraction_61_days | wrong_answer_age_61_days
----------------------------------+--------------------------+-------------=
---------------------+--------------------------
                          5184000 |                  5184000 |             =
             5270400 |                  5184000
(1 row)

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #10823: Better REINDEX syntax.
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: BUG #10823: Better REINDEX syntax.