開発者が、誤ったタイムゾーン形式のデータをデータベースに書き込みました。代わりに、時間のここに見られるように、それは名前を持つオフセット:タイムゾーンを決定するためにWHEREを使用してTIMESTAMP値を更新します。
18-NOV-16 12.17.41.000000000 PM -05:00
18-NOV-16 12.17.05.000000000 PM -05:00
18-NOV-16 12.16.07.000000000 PM AMERICA/NEW_YORK
18-NOV-16 12.12.54.000000000 PM -05:00
18-NOV-16 12.12.33.000000000 PM -05:00
問題の列がタイプTIMESTAMP(0) WITH TIMEZONE
です。もう1つのサードパーティのアプリケーションは、長い形式のタイムゾーンを処理するようにはコーディングされていないため、これらのレコードの読み取りがクラッシュしています。ここで研究する
は、私はこれを修正するための正しい更新クエリを発見した:
UPDATE <<your table>>
SET <<your timestamp column>> = <<your timestamp column>> AT TIME ZONE 'UTC'
問題は、私は500K +レコードを持っており、わずか数百行が含まれる場合、テーブル全体を更新したくないです(更新後に行われる複製のため)。不適切なタイムゾーンデータが格納されている行だけを取得するには、どのようにしてWHERE
節を使用しますか?私はすべてを読んだことがあり、タイムゾーンの形式でフィルタリングの結果を示す例は見つかりません。
ありがとうございました!
これを保存するカラムはどのようなタイプですか?それはvarchar2ですか? – Kacper
なぜアメリカ/ニューヨークを間違っているとお考えですか? –
TIMESTAMP(0)WITH TIMEZONEです。これを追加する質問を編集します。 – Mobilemike