推測では、ある設定で保存timezone
し、別の設定で取得しています。
たとえば、Rails では UTC+6:30 であると認識されているが、PostgreSQL では UTC+5:30 であると認識されている場合、および Rails が Pg タイムゾーンに限定された日付を送信しているが、Pg からはそれらが UTC+6:30 であると想定してそれらを読み取る場合現地時間で、これは起こります。データベース ドライバーが常にタイムゾーン修飾された日付を読み書きするようにするのが最も安全です。
1 時間のずれがあるので、夏時間が関係しているのではないかと思いますが、タイムゾーンが 1 時間ずれている可能性もあります。
regress=# create table test ( x timestamp with time zone );
CREATE TABLE
regress=# insert into test (x) values ('2012-08-09 12:00:00 UTC+6:30');
INSERT 0 1
regress=# SET TIMEZONE = '-5:30';
SET
regress=# select * from test;
x
---------------------------
2012-08-10 00:00:00+05:30
(1 row)
regress=# SET TIMEZONE = '-6:30';
SET
regress=# select * from test;
x
---------------------------
2012-08-10 01:00:00+06:30
(1 row)
または、データベースがタイム ゾーン「-1:00」にあり、アプリケーションが日付を読み取るときにタイム ゾーンを削除しているため、日付が 1 時間ずれているように見える場合があります。入手可能な情報ではなんとも言えません。
あなたを本当に助けるためには、あなたが示すことが必要です:
- 日付を挿入するコード
- で有効にする
INSERT
ことによってキャプチャされた日付を実際に挿入するステートメントと、セッションで.log_statement = 'all'
postgresql.conf
SET TIMEZONE
INSERT
SELECT
後にデータベースからその列を ing した結果SET TIMEZONE = 'UTC'
- 日付を読み取るコード