BUG #6385: extract epoch at timezone returns wrong value

Started by Nonameover 14 years ago2 messagesbugs
Jump to latest
#1Noname
sreeraj@ordyn.com

The following bug has been logged on the website:

Bug reference: 6385
Logged by: Sreeraj S
Email address: sreeraj@ordyn.com
PostgreSQL version: 9.1.2
Operating system: Windows Vista Professional
Description:

Below is given psql output - I am in timezone UTC+05:30 (India) as shown by
select now() output below.

When I give "SELECT extract(epoch from now() );" the output is
1325872658.xxx

I would expect a slightly incremented value when after a few seconds I give
the command "SELECT extract(epoch from now() at time zone 'utc+05:30');" .
Nut I get the value 1325833067.xxx which is the value for utc-05:30 !!!

And when I give "SELECT extract(epoch from now() at time zone
'utc-05:30');", I get 1325872672.xxx which is what is expected if I
specified timezone +05:30 !!!

----- psql extract below ------

ordprdlic=> select now();
now
-------------------------------
2012-01-06 23:27:35.663+05:30
(1 row)

ordprdlic=> SELECT extract(epoch from now() );
date_part
----------------
1325872658.608
(1 row)

ordprdlic=> SELECT extract(epoch from now() at time zone 'utc+05:30');
date_part
----------------
1325833067.073
(1 row)

ordprdlic=> SELECT extract(epoch from now() at time zone 'utc-05:30');
date_part
----------------
1325872672.977
(1 row)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: BUG #6385: extract epoch at timezone returns wrong value

sreeraj@ordyn.com writes:

When I give "SELECT extract(epoch from now() );" the output is
1325872658.xxx

I would expect a slightly incremented value when after a few seconds I give
the command "SELECT extract(epoch from now() at time zone 'utc+05:30');" .
Nut I get the value 1325833067.xxx which is the value for utc-05:30 !!!

And when I give "SELECT extract(epoch from now() at time zone
'utc-05:30');", I get 1325872672.xxx which is what is expected if I
specified timezone +05:30 !!!

I think you are confused about the sign convention for time zones
specified in POSIX notation. See
http://www.postgresql.org/docs/9.1/static/datatype-datetime.html#DATATYPE-TIMEZONES
particularly this comment:

Another issue to keep in mind is that in POSIX time zone names,
positive offsets are used for locations west of
Greenwich. Everywhere else, PostgreSQL follows the ISO-8601
convention that positive timezone offsets are east of Greenwich.

This is not a bug, or at least not our bug --- we're just doing the best
we can to cope with inconsistent standards documents.

regards, tom lane