こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

postgresのtimestampの『witho

postgresのtimestampの『without time zone』と『with time zone』の違いを教えてください。

timestamp [ (precision) ] without time zone
timestamp [ (precision) ] with time zone

PostgreSQL 9.6.1文書を読んでみましたがイマイチ理解できていません。
https://www.postgresql.jp/document/9.6/html/datatype-datetime.html#datatype-datetime-input

ざっくり何が違って、どういう用途で使い分けるのか教えてください。

投稿日時 - 2017-03-07 15:59:00

QNo.9302260

すぐに回答ほしいです

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

タイムスタンプデータにタイムゾーン情報が付加されるか、されないかの違いです。

データにタイムゾーン情報がない場合、そのデータはクライアントのタイムゾーンの値だと解釈されます。
タイムゾーンが日本時間(+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」にしてデータ量を減らす事ができます。

投稿日時 - 2017-03-07 16:55:48

お礼

有難うございます。

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

投稿日時 - 2017-03-08 09:16:51

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

> 大は小を兼ねる状態ですか?
> 「without time zone」をあえて使うメリットはデータ量を減らす事だけですか?
利用する環境次第で選択が変わってきます。
タイムゾーンの違いを意識してDBサーバ、アプリケーションの構築・開発をしていれば「with time zone」が有効に動作しますが、どこかにいい加減な設定があると途端に時間が狂います。
「without time zone」を使っているとタイムゾーンの設定の違いによる変換が無いため、そこに書かれている時間をそのままローカルタイムとして処理できます。
タイムゾーンが違う人同士が時間情報のやりとりをしないのであれば、設計やメンテナンスで楽できると言うメリットがありますし、DBサーバやアプリサーバの設定が変更できない状況下で勝手な変換が行われないようにできるというメリットはあります。

> また、それで減らせるデータ量は、無視できないレベルのものですか?
データ本体はどちらも8バイトなので同じですが、ログの量には効いてきます。
1レコードにタイムスタンプが1カラムあるとして、もっとも長いタイムゾーン表記は「 +hh:mm」ですから7バイトです。
これを100万行書き込んだら700万バイト=7メガバイトになります。
もちろん圧縮したりバイナリー化したりして小さくしますが、大量のデータ更新が発生する環境下ではバカになりません。

投稿日時 - 2017-03-08 10:13:40

お礼

有難うございました。

投稿日時 - 2017-03-17 13:51:21

ANo.1

この記事が参考になると思います。

http://scientre.hateblo.jp/entry/20150407/datetime_with_time_zone

投稿日時 - 2017-03-07 16:40:54

お礼

有難うございます。

参考になります。

投稿日時 - 2017-03-08 09:17:13

あなたにオススメの質問