Я использую postgresql для хранения некоторых дат в базе данных.
В моем приложении фундаментально, что он полностью осведомлен о часовых поясах, и я проводил базовые тесты между клиентом, сервером и базой данных.PostgreSQL 9.1 timezones
Я отправляю даты из приложения браузера, которое я сделал в GWT, и читал даты на postgresql.
Мои тесты:
Клиент всегда находится в часовом поясе, и я всегда посылающие ту же дату для каждого конкретного случая.
13.04.2012 00:00:00 GMT + 00
На posgres я изменяющийся часовые пояса для каждого теста. Между тестами я удаляю все даты из таблицы.
Чтобы изменить часовой пояс на posgres, я делаю это на {PostgreSQL HOME} \ 9.1 \ data \ postgresql.conf, устанавливая timezene на тот, который я хочу.
Тесты: Клиент: 13.04.2012 00:00:00 GMT + 00
первый тест - posgres EST - 12.04.2012 19: 00: 00-05 Согласно postgresql documentation EST = GMT - 5
второго теста - posgres GMT + 5 - 12.04.2012 19: 00: 00-05
третьего теста - posgres GMT - 5 - 13.04.2012 05: 00: 00 + 05
Теперь мой вопрос поднимается: согласно документам, EST = GMT - 5. Так почему я читаю его наоборот? Я что-то упустил?
EDIT Технические аспекты моих тестов:
На клиенте я посылаю этот: 2012 Апрель 13 00:00:00 GMT + 00.
На сервере я использую JDBC, чтобы писать на дб:
новообращенный java.utils.date в java.sql.Timestamp
java.sql.Timestamp sqlTimeStamp = new java.sql.Timestamp(date.getTime());
(дата java.utils.Date, что исходит от клиента)
установить подготовленное заявление
PreparedStatement ps = con.prepareStatement("INSERT INTO teste.dates (dates_tz, dates_ntz) VALUES (?, ?);"
ps.setTimestamp (1, sqlTimeStamp); ...
Для записи, это как раз то, что я хочу, чтобы понять, потому что в целом это хорошо работает для моих целей ..
Просьба показать фактические утверждения, используемые в ваших тестах. –
На клиенте я отправляю это: 2012 13 апреля 00:00:00. На сервере, использующем JDBC для записи на db: java.sql.Timestamp sqlTimeStamp = new java.sql.Timestamp (date.getTime()); (дата java.utils.Date, которая поступает от клиента) INSERT INTO dbFoo.dates_table (date_tz) VALUES (?); ps.setTimestamp (1, sqlTimeStamp); –
Измените свой вопрос вместо того, чтобы помещать информацию в комментарии. Это гораздо легче читать. –