У меня есть виртуальная машина XP (Xen), на которой запущен postgresql 8.3.5. Все было хорошо, до прошлой недели когда-то показывалось время на час вперед.
Таким образом, XP настроен на горное время, без ntp или какой-либо другой синхронизации - у этой машины нет доступа в Интернет.
Postgres имеет все настройки по умолчанию в postgresql.conf, поэтому он должен получать системное время.
Вот результат выполнения различных команд ... Текущее время в горах было "14:06", когда я запускал эти команды .... (пожалуйста, не обращайте внимания на разницу минут / секунд / мсек ниже)
SHOW TIME ZONE;
"US/Mountain"
select now()
"2011-11-01 15:06:42.885-06"
select now()::timestamptz
"2011-11-01 15:06:51.828-06"
select localtime
"15:06:59.799"
select timezone('MST'::text, now())
"2011-11-01 14:07:10.535"
Как видите, правильно показать время удается только последней команде. Я не могу понять, почему вдруг он уходит на час вперед.
Другие интересные наблюдения:
Сервер приложений JBOSS, запущенный на том же компьютере, ведет себя так же
Другое автономное приложение Java показывает правильное время ...
Итак, если что-то не так на уровне ОС, это должно быть согласовано для всех приложений, работающих в ОС ... но некоторые из них, такие как JBOSS, postgresql, показывают 15:06, но другие, такие как мое автономное приложение java, показывают 14:06
похоже, вам нужно обновить свою версию PostgreSQL. я считаю, что версия 8.3.16 актуальна. Правила перехода на летнее время изменились за последние несколько лет.
приложение: согласно JBOSS время приходит либо из ОС, либо из JVM, в зависимости от сценария, описанного в этой ссылке. Так что вам также следует проверить JVM и ОС.