Re: BUG #13670: DST discrepancy between age() and subtraction for timestamptz arguments

Поиск
Список
Период
Сортировка
От Haribabu Kommi
Тема Re: BUG #13670: DST discrepancy between age() and subtraction for timestamptz arguments
Дата
Msg-id CAJrrPGfE1tgnQBqhqBKNwbJ+PqXyooAvHFFQBx2PobumtCMR9Q@mail.gmail.com
обсуждение исходный текст
Ответ на BUG #13670: DST discrepancy between age() and subtraction for timestamptz arguments  (jpruitt@doozer.com)
Ответы Re: BUG #13670: DST discrepancy between age() and subtraction for timestamptz arguments  (John Pruitt <jpruitt@doozer.com>)
Re: BUG #13670: DST discrepancy between age() and subtraction for timestamptz arguments  (John Pruitt <jpruitt@doozer.com>)
Список pgsql-bugs
On Fri, Oct 9, 2015 at 9:34 AM,  <jpruitt@doozer.com> wrote:
> The following bug has been logged on the website:
>
> Bug reference:      13670
> Logged by:          John Pruitt
> Email address:      jpruitt@doozer.com
> PostgreSQL version: 9.4.4
> Operating system:   x86_64-apple-darwin
> Description:
>
> We are seeing a discrepancy between what is returned by the
age(timestamptz,
> timestamptz) function versus using the subtraction operator (timestamptz -
> timestamptz) on the DST transition days. It appears that the subtraction
> operator gives the correct answers, while the age function does not.
>
> /* short day - 2:00 is skipped - 1 hour is correct */
> select
>   '2015-03-08 03:00'::timestamptz - '2015-03-08 01:00'::timestamptz -- 1
> hour
> , age('2015-03-08 03:00'::timestamptz, '2015-03-08 01:00'::timestamptz)
-- 2
> hours
> ;
>
> /* long day - 1:00 repeats - 3 hours is correct */
> select
>   '2014-11-02 02:00'::timestamptz - '2014-11-02 00:00'::timestamptz -- 3
> hours
> , age('2014-11-02 02:00'::timestamptz, '2014-11-02 00:00'::timestamptz)
-- 2
> hours
> ;

From the PostgreSQL documentation it shows that the age function works with
timestamp
agruements instead of timestamptz. So the behavior is correct as it is
ignoring the timezone
effect.

Because of default cast functions for timestamp and timestamptz, the
function can accept
any type of argument and works as per timestamp datatype described in the
documentation.

Refer: Date/Time Functions
http://www.postgresql.org/docs/9.0/static/functions-datetime.html

Because of the above reason, it works similar like as follows.

select
   '2014-11-02 02:00'::timestamp - '2014-11-02 00:00'::timestamp
 , age('2014-11-02 02:00'::timestamp, '2014-11-02 00:00'::timestamp)


From the code point of view, it just accepts the data timestamptz and just
ignores the
timezone in the calculation according to the documentation.

Regards,
Hari Babu
Fujitsu Australia

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

Предыдущее
От: oktogen@mail.ru
Дата:
Сообщение: BUG #13671: pg_terminate_backend(pid) does not work
Следующее
От: Haribabu Kommi
Дата:
Сообщение: Re: BUG #13671: pg_terminate_backend(pid) does not work