データベース内のすべてのタイムスタンプを GMT 形式にすることを目標とするアプリケーションがあります。これらのタイムスタンプをタイムゾーンなしで作成するupdate_ts timestamp without time zone
必要がありますか、それともそうする方が安全/良いですか、またはタイムスタンプなしでタイムスタンプを作成するのは悪い考えですかタイムゾーン。
1 に答える
データベース内のすべてのタイムスタンプを GMT 形式にすることを目標とするアプリケーションがあります。
この場合timestamp with time zone
、 ( timestamptz
) は、SQL でのタイムスタンプ型の率直に愚かな命名にもかかわらず、まさにあなたが望むものです。
「タイムゾーン付きのタイムスタンプ」は、実際には「UTCに保存され、入出力時に変換されるタイムスタンプ」です。
「タイムゾーンなしのタイムスタンプ」は、「タイムゾーン変換なしで保存および取得されたタイムスタンプ」です。
「タイム ゾーンあり/なし」を「タイム ゾーン変換あり/なし」と読むと、型の意味がよくわかります。
名前にもかかわらず、どちらの型も実際にはタイム ゾーンを格納しません。「タイムゾーン付きのタイムスタンプ」が実際にあったはずの SQL 型はありません。これは、時刻の tz オフセットとタイムゾーンを明確に示して格納されたローカル時刻です (単純な UTC オフセットでは十分ではありません)。 DST 移行に関するあいまいさのため)。
すべてを UTC で実行する場合はtimestamptz
、サーバーTimeZone
を使用して UTC に設定します。そうすれば、ローカル時間の変換が必要なアプリでも、設定することで取得できますTimeZone
。