преобразование между часовыми поясами в postgresql - PullRequest
0 голосов
/ 24 октября 2018

У меня есть дата в UTC (timestamp with time zone):

test=# select ('2018-05-31T21:00:00+00'::timestamptz);
      timestamptz       
------------------------
 2018-05-31 21:00:00+00
(1 row)

Я хочу преобразовать ее в другой часовой пояс, например, UTC + 2.В документации говорится, что at time zone должен сделать это для меня:

Экспрессия
<em><timestamp with time zone></em> AT TIME ZONE <em><zone></em>
Тип возврата
timestamp without time zone
Описание
Преобразовать данную временную метку с часовым поясом в новый часовой пояс без указания часового пояса

См. здесь .

Но когда я пытаюсь это сделать, я получаю странные результаты:

test# select ('2018-05-31T21:00:00+00'::timestamptz) at time zone 'utc+2';
      timezone       
---------------------
 2018-05-31 19:00:00
(1 row)

Я почти уверен, что 21 час в UTC - это 23 часа в UTC + 2 (вот причинадля +2, в конце концов).

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 24 октября 2018

Ваша проблема - это стандарт POSIX, который в соответствии с документацией устанавливает, что

Другая проблема, о которой следует помнить, заключается в том, что в именах часовых поясов POSIX используются положительные смещения дляместа к западу от Гринвича.В любом другом месте PostgreSQL следует соглашению ISO-8601, согласно которому положительные смещения часовых поясов находятся к востоку от Гринвича.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...