Назад | Перейти на главную страницу

Неправильное время в базе данных postgresql

У меня есть виртуальная машина 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"

Как видите, правильно показать время удается только последней команде. Я не могу понять, почему вдруг он уходит на час вперед.

Другие интересные наблюдения:

  1. Сервер приложений JBOSS, запущенный на том же компьютере, ведет себя так же

  2. Другое автономное приложение Java показывает правильное время ...

Итак, если что-то не так на уровне ОС, это должно быть согласовано для всех приложений, работающих в ОС ... но некоторые из них, такие как JBOSS, postgresql, показывают 15:06, но другие, такие как мое автономное приложение java, показывают 14:06

похоже, вам нужно обновить свою версию PostgreSQL. я считаю, что версия 8.3.16 актуальна. Правила перехода на летнее время изменились за последние несколько лет.

приложение: согласно JBOSS время приходит либо из ОС, либо из JVM, в зависимости от сценария, описанного в этой ссылке. Так что вам также следует проверить JVM и ОС.