zone.
Есть два сервера с постгресом 9.6.20. На обоих установлена таймзона Europe/Moscow (что в постгресе, что на самом сервере).
Выполняю набор команд на одном сервере:
set time zone 'Europe/Moscow';
SELECT '2021-03-17T12:34:11+00:00'::timestamptz::timestamp; # получаю 15:34
set time zone 'utc';
SELECT '2021-03-17T12:34:11+00:00'::timestamptz::timestamp; # получаю 12:34
А вот на втором сервере:
set time zone 'Europe/Moscow';
SELECT '2021-03-17T12:34:11+00:00'::timestamptz::timestamp; # получаю 15:34
set time zone 'utc';
SELECT '2021-03-17T12:34:11+00:00'::timestamptz::timestamp; # получаю 15:34
В чем может быть причина такой разницы?
Казалось бы, time zone почему-то не устанавливается. Вы такой запрос попробуйте, например: SELECT '2021-03-17T12:34:11+00:00'::timestamptz, '2021-03-17T12:34:11+00:00'::timestamptz::timestamp; Первое поле — для того, чтобы было видно смещение текущей time zone.
В обоих случаях возвращается 2021-03-17 15:34:11+03 То есть ощущение, что set time zone не применяется. При этом show time zone возвращает именно установленное значение. Магия какая-то
Значит, действительно не применяется, казалось бы. Можно и "current_setting('TimeZone')" добавить именно в этот запрос. А каким клиентом выполняются запросы? Если не psql — проверьте в нём. Или, может, где-то есть connection pooler (транзакционный)? Если нет — покажите "SELECT version();" с каждого сервера.
Версия совпадает PostgreSQL 9.6.20 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit Запросы делаю через psql без каких-либо прослоек.
Очень странно... возможно, что там что-то не так с tzdata (я что-то подобное когда-то слышал)? Добавьте current_setting('TimeZone') в запросы и перепроверьте, всё же (мало ли что).
Перепроверил. Настройки задаются корректно. Спасибо, посмотрю в сторону tzdata.
Ну а другие варианты указания UTC (например, Etc/UTC и т.п.) работают? Что там в pg_timezone_names и pg_timezone_abbrevs на "проблемном" сервере?
Да, большое спасибо! Проблема в этих таблицах. Они в utc-строках содержат московское смещение...
Ничего себе (додумался же кто-то). Не за что! ;)
Обсуждают сегодня