Как Postgres вычисляет current_timestamp?

Я выполняю следующий запрос в той же базе данных Postgres (база данных на самом деле является базой данных AWS Aurora Postgres)

      SELECT CURRENT_TIMESTAMP

в 2-х разных контекстах. Когда я запускаю его в инструменте базы данных, запущенном на моем ноутбуке, я возвращаюсь

      2021-05-21 18:12:13.398132

но когда я запускаю тот же запрос на странице на стороне сервера на веб-сайте, работающем на AWS, я возвращаюсь

      2021-05-21 11:12:40.508504 

Оба они работают с одной и той же базой данных Postgres.

Результатом моего инструмента базы данных, запущенного на моем ноутбуке, является GMT, результат при работе на сервере - тихоокеанский часовой пояс.

Я ожидал, что Postgres будет использовать часовой пояс сервера (AWS Aurora), на котором он работает. Вместо этого он, похоже, выбирает часовой пояс на основе веб-сервера или моего ноутбука? Хотя в этом нет особого смысла, поскольку на моем ноутбуке используется тихоокеанское время (там, где я нахожусь).

Как Postgres вычисляет current_timestamp?

1 ответ

вероятно, это связано с самим приложением. Когда приложения подключаются к postgres, они могут УСТАНОВИТЬ часовой пояс на уровне сеанса. Что-то вроде этого:

      SET TIMEZONE='GMT';

Попробуйте проверить часовой пояс вашего сеанса обоими инструментами, используя:

      SHOW TIMEZONE

Позже этот часовой пояс используется с типами «TIMESTAMP WITH TIME ZONE» для отображения соответствующей даты / времени.

Другие вопросы по тегам