Re: Setting timezone: is it bug or intended?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Setting timezone: is it bug or intended?
Дата
Msg-id 22785.1303854530@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Setting timezone: is it bug or intended?  (Bruce Momjian <bruce@momjian.us>)
Ответы Re: Setting timezone: is it bug or intended?  (Bruce Momjian <bruce@momjian.us>)
Список pgsql-bugs
Bruce Momjian <bruce@momjian.us> writes:
> Tom Lane wrote:
>> It already is documented.  See
>> http://developer.postgresql.org/pgdocs/postgres/datatype-datetime.html#DATATYPE-TIMEZONES
>> specifically the point that POSIX zone names have the opposite sign
>> convention from ISO-8601.
>>
>> The great thing about standards is there are so many to choose from ;-)

> What isn't documented is why the sign changes for +0300 but not +03:

+03:00 is a legal POSIX zone name (hence the sign is different from SQL
convention).  The other one is evidently being handled by this code path
in check_timezone:

        /*
         * Try it as a numeric number of hours (possibly fractional).
         */
        hours = strtod(*newval, &endptr);
        if (endptr != *newval && *endptr == '\0')
        {
            /* Here we change from SQL to Unix sign convention */
            myextra.CTimeZone = -hours * SECS_PER_HOUR;
            myextra.HasCTZSet = true;
        }

which I think is legacy code meant to deal with SQL-standard
specification of timezone offsets as INTERVAL values.  You get the same
interpretation of sign when you use the SQL-spec syntax:

regression=# set time zone interval '+03:00';
SET
regression=# select now();
              now
-------------------------------
 2011-04-27 00:44:53.560295+03
(1 row)

Like I said, too many standards with their fingers in this pie.

            regards, tom lane

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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: Setting timezone: is it bug or intended?
Следующее
От: "Suprabhat"
Дата:
Сообщение: BUG #5995: connection pooling not working