2017-12-06 24 views
1

すべての時刻値がCSTに保存されているRedshiftデータテーブルがあり、郵便番号(場所)に基づいて時間値をそれぞれのタイムゾーンに変換します。私はそれを行う一方でタイムゾーンを変換するときの夏時間の処理

は、私はすべての時間の値が標準時間であるので、私の機能の利用が

CASE WHEN **** convert_timezone('CST', 'EST', time_column) 
    WHEN **** convert_timezone('CST', 'MST', time_column) 
.... 
END 

我々は夏時間に入るとこれが適用できないであることを理解しています。 これは、私が2018年3月以降にSQLクエリーを改めて変更しないようにするために、どうしたらいいですか?

答えて

1

タイムゾーンの略語は使用しないでください。これらは多少あいまいで、タイムゾーンの1つの側面のみを参照できます。代わりに、America/Chicago(米国中部時間)などの完全なIANA time zone identifierを使用してください。

これはthe Redshift docsでよく説明されています

タイムゾーン名を使用して

あなたはタイムゾーン名を使用して、タイムゾーンを指定した場合、CONVERT_TIMEZONEが自動的に夏時間(DST)に合わせて調整、または 'タイムスタンプ'で指定された日時にそのタイムゾーンで有効な、サマータイム、標準時、または冬時間などの他の地方の季節プロトコル。たとえば、「ヨーロッパ/ロンドン」は冬はUTCを表し、夏はUTC + 1を表します。

あなたの質問の「郵便番号に基づいて」という限りでは、すべての郵便番号が地域に基づいているわけではありません。また、技術的な課題、海外のAPO/FPOの住所、米国の領土、およびその他のエッジケースがあります。さらに、いくつかの郵便番号が複数のタイムゾーンにまたがることがあります。

より良いアプローチ、可能な場合に:緯度/経度の近似を得る

  • 座標 - ソース・データに応じて種々の技術を使用して。たとえば、ジオコーディングAPIは住所を取り、緯度/経度を指定できます。
  • 次に、技術listed hereのいずれかを使用して、その場所のタイムゾーンIDを特定します。
関連する問題