• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:postgresのtimestampの『witho)

PostgreSQLのtimestampの 'without time zone' と 'with time zone' の違い

このQ&Aのポイント
  • PostgreSQLのtimestampの 'without time zone' と 'with time zone' の違いについて教えてください。
  • timestampのデータ型には、'without time zone' と 'with time zone' の2つのオプションがあります。
  • これらの違いと、それぞれの用途について詳しく説明してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

タイムスタンプデータにタイムゾーン情報が付加されるか、されないかの違いです。 データにタイムゾーン情報がない場合、そのデータはクライアントのタイムゾーンの値だと解釈されます。 タイムゾーンが日本時間(+9)のクライアントにとって '2017-03-07 12:00:00' は日本時間の3月7日お昼の12時で、UTC に直すと「3月7日午前3時」です。 このデータをタイムゾーンがハワイ時間(-10)のクライアントが見るとハワイ時間の3月7日お昼の12時で、UTC に直すと「3月7日午後10時」です。 同じデータを見ているのにクライアントのタイムゾーンが異なると全く違う時間を指している事になり、グローバルで利用するデータの場合は不都合が生じます。(アメリカなんかは国内でも時差があるからローカルでも一大事) なので、タイムゾーンの異なるクライアントから参照される可能性があるなら「with time zone」にして、どこのタイムゾーンから参照されても同じ時刻と解釈されるようにします。 一方、タイムゾーンを気にしなくてもよい場合は「without time zone」にしてデータ量を減らす事ができます。

questorfe
質問者

お礼

有難うございます。 大は小を兼ねる状態ですか? 「without time zone」をあえて使うメリットはデータ量を減らす事だけですか? また、それで減らせるデータ量は、無視できないレベルのものですか?

その他の回答 (2)

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.3

> 大は小を兼ねる状態ですか? > 「without time zone」をあえて使うメリットはデータ量を減らす事だけですか? 利用する環境次第で選択が変わってきます。 タイムゾーンの違いを意識してDBサーバ、アプリケーションの構築・開発をしていれば「with time zone」が有効に動作しますが、どこかにいい加減な設定があると途端に時間が狂います。 「without time zone」を使っているとタイムゾーンの設定の違いによる変換が無いため、そこに書かれている時間をそのままローカルタイムとして処理できます。 タイムゾーンが違う人同士が時間情報のやりとりをしないのであれば、設計やメンテナンスで楽できると言うメリットがありますし、DBサーバやアプリサーバの設定が変更できない状況下で勝手な変換が行われないようにできるというメリットはあります。 > また、それで減らせるデータ量は、無視できないレベルのものですか? データ本体はどちらも8バイトなので同じですが、ログの量には効いてきます。 1レコードにタイムスタンプが1カラムあるとして、もっとも長いタイムゾーン表記は「 +hh:mm」ですから7バイトです。 これを100万行書き込んだら700万バイト=7メガバイトになります。 もちろん圧縮したりバイナリー化したりして小さくしますが、大量のデータ更新が発生する環境下ではバカになりません。

questorfe
質問者

お礼

有難うございました。

回答No.1

この記事が参考になると思います。 http://scientre.hateblo.jp/entry/20150407/datetime_with_time_zone

questorfe
質問者

お礼

有難うございます。 参考になります。