powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / проблема с временем
6 сообщений из 6, страница 1 из 1
проблема с временем
    #39132833
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При проектировании БД не был предусмотрен формат хранения времени. Поэтому на начальном этапе был выбран timestamp without time zone. Насколько я понимаю, время хранится в +00 часов по гринвичу

Отсюда пошли небольшие ошибочки типа:
21 декабря 2015 г в 02:00 ночи на клиенте вводишь данные(на сервере время московское - также 02 часа), а сохраняются как 20 декабря (где тип данных date) или 20 декабря 2015 23:00 (если тип данных timestamp).
Если выполнить SELECT NOW() - показывает текущее время на сервере минус три часа

Надо как-то с этим бороться.

Вариант 1: не работать ночью ;-)
Вариант 2: решить проблему

http://www.postgresql.org/docs/9.1/static/runtime-config-client.html#GUC-TIMEZONE

Вопрос: как установить таймзон, например, + 7 часов от московского?
timezone ('GST')






--
Россия - отличная страна!
...
Рейтинг: 0 / 0
проблема с временем
    #39132908
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PCContra,

`timestamp without time zone` хранит время так, как оно было задано — “локальное”. Смотрите:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
DROP TABLE IF EXISTS t;
CREATE TABLE t (ts timestamp without time zone, tstz timestamp with time zone);
INSERT INTO t VALUES (now(), now());

SHOW TimeZone;
SELECT * FROM t;
SET TimeZone='UTC';
SELECT * FROM t;


Postgres автоматически конвертирует метки в UTC для типа `timestamp with time zone` основываясь на настрояках клиента через переменную `TimeZone`:
Код: sql
1.
2.
3.
4.
INSERT INTO t VALUES (now(), now());
SELECT * FROM t;
RESET TimeZone;
SELECT * FROM t;



В вашем случае нужно на клиенте правильно настраивать зону, скажем так `SET TimeZone='+07'`;

Вот отличная статья на тему: http://habrahabr.ru/company/mailru/blog/242645/
...
Рейтинг: 0 / 0
проблема с временем
    #39134124
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В главе 18.11.2. Locale and Formatting есть команда TimeZone (string) . Также есть команда SET "параметр" ( http://www.postgresql.org/docs/9.1/static/sql-set.html), например, SET TIME ZONE +10 ;

В чем разница?

Для команды SET можно указывать SESSION (для сессии), или что тоже самое, что и без SESSION, и LOCAL (для текущей транзакции).

А для чего тогда TimeZone (string)?
...
Рейтинг: 0 / 0
проблема с временем
    #39134180
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
SET TimeZone='UTC';
show TimeZone;
RESET Time Zone;
show TimeZone;
...
Рейтинг: 0 / 0
проблема с временем
    #39134181
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PCContra,

Попробуйте:
Код: sql
1.
2.
3.
4.
5.
6.
SET TIME ZONE +10;
SHOW TimeZone;
SET TimeZone='+07';
SHOW TimeZone;
RESET TimeZone;
SHOW TIME ZONE;
...
Рейтинг: 0 / 0
проблема с временем
    #39135108
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov,
не понял разницы
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / проблема с временем
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]