UTCのタイムスタンプの「作成済み」フィールドを複数のテーブルに入れたいのですが。Postgres UTCタイムスタンプ?
ts TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
は、タイムゾーンと私にローカル時間を与える:
foo=# select ts from messages;
ts
-------------------------------
2017-05-26 11:54:07.532796+01
2017-05-26 11:54:08.536241+01
2017-05-26 11:54:09.538119+01
2017-05-26 11:54:10.541089+01
2017-05-26 11:54:11.543262+01
ts TIMESTAMP NOT NULL DEFAULT now(),
は私のタイムゾーン情報(危険)なしのローカルタイムを提供します:
foo=# select ts from messages;
ts
----------------------------
2017-05-26 11:56:00.134596
2017-05-26 11:56:01.13798
2017-05-26 11:56:02.140586
2017-05-26 11:56:03.143076
2017-05-26 11:56:04.14565
Whatフィールドの定義は私に次のようになります、コードがUTC以外のタイムゾーン(BST、British Summer Timeなど)でサーバー上で実行される場合:
foo=# select ts from messages;
ts
----------------------------
2017-05-26 10:56:00.134596+00
2017-05-26 10:56:01.13798+00
2017-05-26 10:56:02.140586+00
2017-05-26 10:56:03.143076+00
2017-05-26 10:56:04.14565+00
さえ:他に何もできない場合
foo=# select ts from messages;
ts
----------------------------
2017-05-26 10:56:00.134596
2017-05-26 10:56:01.13798
2017-05-26 10:56:02.140586
2017-05-26 10:56:03.143076
2017-05-26 10:56:04.14565
は、罰金になります(注:時間は午前10時のUTCはなく、上記の両方の例では午前11時のBSTです)。タイムゾーンと
タイムスタンプを行います。クライアントのタイムゾーンが時間を操作し、その値がUTCに変換されてサーバーに保存されます。 postgresはすべてのタイムスタンプをUTCに保ちます –