データ型がtimestamp with time zone
のPostgreSQLテーブルにタイムスタンプが保存されています。私は彼らが実際にUTCで保存されていることを理解していますが、データベースはUS Central(CST/CDT)に設定されています。すべての記録はもともとアメリカ中部のタイムスタンプではなく、他のアメリカのタイムゾーンからのものでした。クエリを実行するときには、都市に基づいて正しい元のタイムゾーンを特定し、タイムスタンプをソースタイムゾーンに戻したいと思います。この部分は、手動で作成されたルックアップテーブルのセットで解決されます。 標準対にタイムゾーンの夏時間バージョンを変換するとき、私はこだわって何PostgreSQL Convert timestamptz
を知ることです。米国では、Standard - > Daylight on 3月の第2日曜日、0200時間(即座に0300になります)。 11月の第1日曜日、Daylight - > Standard at 0200。すぐに0100になります。最初の遷移は簡単です(date > spring_forward
& hour > 2
)。
しかし、その日は0100の本質的に2つのレコードが存在するため、2番目の遷移は困難です。 CDTの場合は1番目の0100、次にCSTの場合は2番目の(落ちた)0100です。明らかに、複製された0100をStandardとして変換したいが、1番目のものは変換したくないが、複雑なカウントのクエリがないとこれを行う方法がわからない。この問題は、PST & PDTの両方を含む「太平洋」などの「一般的な」タイムゾーンでPythonで解決されたようです。私はPostgreSQLの場合はこれと似ているとは思えませんが、https://www.postgresql.org/docs/7.2/static/timezones.htmlです。
タイムスタンプについては、元の都市を知っているので、タイムゾーンを適切な(標準と夏時間)のタイムゾーンに総称的に変換するにはどうすればよいですか?
タイムゾーン '*ゾーン名からあなたのルックアップテーブル*'を選択することに固執します... –