2013-07-25 39 views
2

我有表t1和列c1布爾型NULL類型。列中的所有值都是NULL。但PostgreSQL不會讓我這樣改變列的類型:PostgreSQL:從布爾值更改列類型

ALTER TABLE "t1" 
ALTER "c1" TYPE timestamp; 

* ERROR: column "c1" cannot be cast to type timestamp without time zone 

如何更改類型?謝謝

回答

6

如果你的列中的所有值確實爲空,簡單的添加USING NULL:有沒有困難轉換之作。

ALTER TABLE "t1" 
ALTER "c1" TYPE timestamp USING NULL; 
+1

很確定,如果有任何數據,這將快速拋出非空數據,所以要小心。 –

0

我認爲你只需要給它一個時區。這爲我工作:

ALTER TABLE t1 
    ALTER COLUMN c1 SET DATA TYPE timestamp with time zone 
    USING 
     timestamp with time zone 'epoch'; 
+0

你的方法(a)不使用所需的列型(timestamptz而不是時間戳,它不一定是壞事,相反,但那是不一樣的問題)和(b)將所有值填入「時代」,即「1970年1月1日00:00」而不是空。 (嘗試'SELECT timestamp with time zone'epoch';':這就是'USING'將要使用的內容。) – Bruno