Как заставить PostgreSQL игнорировать часовой пояс клиента при получении LOCALTIMESTAMP? - PullRequest
0 голосов
/ 15 апреля 2019

Согласно документации, функция PostgreSQL localtimestamp возвращает «текущую дату и время», а значение «без часового пояса». Но я обнаружил, что возвращаемое значение зависит не только от текущего абсолютного времени, но и от настройки часового пояса клиента:

clan_1=> SET timezone='UTC';
SET
clan_1=> SELECT localtimestamp;
       localtimestamp       
----------------------------
 2019-04-15 12:50:23.754272
(1 row)

clan_1=> SET timezone='Europe/Prague';
SET
clan_1=> SELECT localtimestamp;
       localtimestamp       
----------------------------
 2019-04-15 14:50:33.678917
(1 row)

В моих функциях БД мне нужно получать согласованные данные (типа отметка времени , а не отметка времени ) независимо от того, какой клиент (и его настройка часового пояса) используется для их вызова. После некоторых исследований я обнаружил, что должно работать следующее:

SELECT current_timestamp AT TIME ZONE 'UTC';

Есть ли лучший (более простой) способ?


PostgreSQL 10,6

1 Ответ

0 голосов
/ 15 апреля 2019

Ваш способ сделать это хорошо, но так проще:

SELECT current_timestamp;

Он также вернет одну и ту же метку времени для всех сеансов, только они будут отформатированы в соответствии с часовым поясом сеанса.

Это не должно быть проблемой, потому что 2019-04-01 12:00:00+02 совпадает с 2019-04-01 10:00:00+00.

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