Я установил, PostgreSQL 9
и время, которое он показывает, на 1 час отстает от времени сервера.
Бег Select NOW()
шоу:2011-07-12 11:51:50.453842+00
Дата сервера показывает: Tue Jul 12 12:51:40 BST 2011
Это на 1 час меньше, но часовой пояс показан в phppgadmin
:TimeZone Etc/GMT0
Я пытался войти в postgresql.conf
и установить
часовой пояс = GMT
затем выполняется перезагрузка, но без изменений.
Любые идеи, которые я думал, это просто использовал часовой пояс сервера, но, очевидно, нет ?!
РЕШЕНИЕ !: Я поставил GMT
раньше, а это было на час позже. после поисков выяснилось, что мне нужно было его установить Europe/London
. Это учитывает +1 час летнего британского времени, а GMT - нет!
postgresql
Blu Towers
источник
источник
Ответы:
Часовой пояс - это параметр сеанса. Итак, вы можете изменить часовой пояс для текущего сеанса.
См. Док .
Или, более точно следуя стандарту SQL, используйте
SET TIME ZONE
команду. Обратите внимание на два слова для «ЧАСОВОГО ПОЯСА», где в приведенном выше коде используется одно слово «часовой пояс».Документ объясняет разницу:
источник
SET TIME ZONE 'UTC';
. См. Док .Выберите
timezone
из:И
set
как показано ниже в примере:Используйте имя своей БД вместо
postgres
приведенного выше утверждения.источник
SELECT pg_reload_conf();
:)SELECT pg_reload_conf()
вернулся верно, ноnow()
иselect current_setting('TIMEZONE')
продолжаю возвращать значения для «Америки / New_York». Это потому, что я не суперпользователь?Чтобы выполнить изменение часового пояса в Postgres 9.1, вы должны:
1. - Найдите в папке «timezones» в /usr/share/postgresql/9.1/ подходящий файл, в моем случае это будет «America.txt», найдите в нем ближайшее к вашей зоне место и скопируйте первые буквы в левом столбце.
Например: если вы находитесь в «Нью-Йорке» или «Панаме», это будет «EST»:
2.- Раскомментируйте строку «часовой пояс» в своем
postgresql.conf
файле и укажите часовой пояс, как показано:3.- Перезапустите Postgres
источник
−05:00
круглый год, в то время как Нью-Йорк сдвигает час с переходом на летнее время (DST). Часовой пояс - это больше, чем смещение; часовой пояс включает прошлый, настоящий и будущий набор правил и аномалий, таких как летнее время. Так, говорят , что вы имеете в виду:America/Panama
,America/New_York
,Europe/London
,UTC
(илиZulu
).SELECT * FROM pg_timezone_names
что, вероятно, безопаснее, учитывая, что сторонние сайты не обязательно будут такими же актуальными. (или устаревший) как ваш собственный экземпляр базы данных.postgresql
select pg_reload_conf()
.Общепринятый ответ на Мухаммада Usama правильно.
Имя параметра конфигурации
Этот ответ показывает, как установить параметр конфигурации, специфичный для Postgres, следующим образом:
…где
timezone
это не команда SQL, это имя параметра конфигурации.См. Документ для этого .
Стандартная команда SQL
Кроме того , вы можете использовать команду SQL , определенный SQL спецификации:
SET TIME ZONE
. В этом синтаксисе пара словTIME ZONE
заменяет «часовой пояс» (фактическая команда SQL вместо имени параметра), и нет «TO».И эта команда, и команда выше имеют одинаковый эффект, устанавливая значение только для текущего сеанса. Чтобы сделать изменение постоянным, см. Этот ответ родного брата .
См. Документ для этого .
Название часового пояса
Вы можете указать правильное имя часового пояса . Большинство из них - континент / регион.
…или…
Избегайте трех- или четырехбуквенных сокращений, таких как
EST
или,IST
поскольку они не являются ни стандартизированными, ни уникальными. См. Список названий часовых поясов в Википедии .Получить текущую зону
Чтобы увидеть текущий часовой пояс сеанса, попробуйте одно из следующих утверждений. Технически мы вызываем
SHOW
команду для отображения параметра времени выполнения.…или…
источник
SHOW
детальSELECT current_setting('TIMEZONE')
В дополнение к предыдущим ответам, если вы используете инструмент pgAdmin III, вы можете установить часовой пояс следующим образом:
источник
Обратите внимание, что многие сторонние клиенты имеют собственные настройки часового пояса, перекрывающие любые настройки сервера Postgres и \ или сеанса.
Например, если вы используете IntelliJ IDEA 2017.3 (или DataGrips), вы должны определить часовой пояс как:
«Свойства источника БД» -> вкладка «Дополнительно» -> «Параметры ВМ»: -Duser.timezone = UTC + 06: 00
в противном случае вы увидите «UTC» независимо от того, что вы установили где-либо еще.
источник
Возможно, это не связано с вопросом, но мне нужно было использовать CST, установить системный часовой пояс на желаемый tz (Америка / ...), а затем в postgresql conf установить значение часового пояса на 'localtime', и это сработало как шарм , current_time печатает правильное время (Postgresql 9.5 в Ubuntu 16)
источник