我有表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
如何更改類型?謝謝
我有表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
如何更改類型?謝謝
如果你的列中的所有值確實爲空,簡單的添加USING NULL
:有沒有困難轉換之作。
ALTER TABLE "t1"
ALTER "c1" TYPE timestamp USING NULL;
我認爲你只需要給它一個時區。這爲我工作:
ALTER TABLE t1
ALTER COLUMN c1 SET DATA TYPE timestamp with time zone
USING
timestamp with time zone 'epoch';
你的方法(a)不使用所需的列型(timestamptz而不是時間戳,它不一定是壞事,相反,但那是不一樣的問題)和(b)將所有值填入「時代」,即「1970年1月1日00:00」而不是空。 (嘗試'SELECT timestamp with time zone'epoch';':這就是'USING'將要使用的內容。) – Bruno
很確定,如果有任何數據,這將快速拋出非空數據,所以要小心。 –