Как 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» для отображения соответствующей даты / времени.