2017-06-23 12 views
0

私はtimestamp型のカラムを持つverticaデータベーステーブルを持っています。今は、それを "タイムゾーンヌルのタイムスタンプ"のタイプに変更したいと思います。タイムゾーンなしで作成されたテーブルの列を作成していますが、新しいユーザー用にタイムゾーンを保存したかったのですが、何も表示されません。timestamp型のverticaデータベース列をタイムゾーンでタイムスタンプに変更するにはどうすればよいですか?

誰か助けてもらえますか?

私はすでに、クエリの下に試してみました:

タイムゾーンのヌルしたALTER COLUMN "product_sold_at" SETデータ型のtimestampt product_info

のALTER TABLE

+0

これが否決された理由を私は知らないのですか? - 私はできるだけ早く修正する必要があるverticaデータベースの技術的な問題を求めています。 –

答えて

1

あなたが作ることができないいくつかのソース/ターゲット・データ型の変換があります。 TIMEのZONE WITH TIMESTAMPへのTIMESTAMPは、そのうちの一つである:

SQL>ALTER TABLE w_ts ALTER COLUMN ts SET DATA TYPE TIMESTAMP WITH TIME ZONE; 
executing statement returns SQL_ERROR: 
0A000:1:2377:ROLLBACK 2377: Cannot convert column "ts" from 
"timestamp" to type "timestamptz" 

回避策は次のようになります。

ALTER TABLE w_ts ADD COLUMN tsz TIMESTAMP WITH TIME ZONE DEFAULT ts; 

は、これはあなたの新しいタイプの列を追加し、古い列の内容を即座にそれを埋めます。

今デフォルトの制約削除:

ALTER TABLE w_ts ALTER COLUMN tsz DROP DEFAULT; 

をドロップされたデフォルトの制約から、まだ既存のリンクを取り除くために古代史マークを進める:

SELECT MAKE_AHM_NOW(); 

今、あなたは古いをドロップすることができます列:

ALTER TABLE w_ts DROP COLUMN ts; 

新しい列の名前を元の列の名前に変更します。

ALTER TABLE w_ts RENAME COLUMN tsz TO ts; 

かなりの数のステップが、それは動作しない遅すぎる....

幸運

マルコ

+0

ありがとうmarcothesane。この問題を回避するためにこの問題を修正しました。問題の重大さを見ることで、私は質問が投票されるべきだと感じます。あなたはこの質問をupvoteできますか? –

0

私は、このコラムcとテーブルtを与え動作するはずと信じて:

ALTER TABLE t ALTER COLUMN c SET NOT NULL; 
ALTER TABLE t ALTER COLUMN c SET DATA TYPE TIMESTAMPTZ; 

参考文献:

+0

私はこれを試しましたが、運はまだありません。 –

+1

運が悪いとはどういう意味ですか?エラー?もしそうなら、メッセージは何ですか? –

+0

エラーが発生しています。「エラー:構文エラー」または「DATA」[SQL State = 42601] " –

関連する問題