Snowflake SQL compilation error: cannot change column from type TIMESTAMP_LTZ(9) to TIMESTAMP_NTZ(9)
Snowflake SQL compilation error: cannot change column from type TIMESTAMP_LTZ(9) to TIMESTAMP_NTZ(9)
我有一个雪花数据库 table 当前定义为
CREATE TABLE lightsaber (
ID NUMBER(38,0) NOT NULL AUTOINCREMENT,
APPLIED_ON TIMESTAMP_LTZ(9) NOT NULL DEFAULT CURRENT_TIMESTAMP(),
CONSTRAINT PK_ID PRIMARY KEY (ID)
);
我想将 APPLIED_ON
列从 TIMESTAMP_LTZ(9)
更改为 TIMESTAMP_NTZ(9)
。我读过 https://docs.snowflake.com/en/sql-reference/sql/alter-table-column.html。从那里我收集到我应该执行
alter table lightsaber alter APPLIED_ON set data type TIMESTAMP_NTZ ;
但是它输出错误
SQL compilation error: cannot change column APPLIED_ON from type TIMESTAMP_LTZ(9) to TIMESTAMP_NTZ(9)
我尝试了一些其他变体但没有成功。
不幸的是,这不起作用,因为(根据文档)在 alter 中为列设置 TYPE 时,指定的类型(即类型)必须是 NUMBER 或文本数据类型(VARCHAR、STRING、TEXT、等)并且对于如何使用它也有一些限制 - 事情是 Snowflake 不会自动知道如何进行数据转换,因此更改数据类型的选项不完整。
也许可以尝试更复杂的方法,即添加具有所需数据类型的新列、复制数据并删除旧列?
我有一个雪花数据库 table 当前定义为
CREATE TABLE lightsaber (
ID NUMBER(38,0) NOT NULL AUTOINCREMENT,
APPLIED_ON TIMESTAMP_LTZ(9) NOT NULL DEFAULT CURRENT_TIMESTAMP(),
CONSTRAINT PK_ID PRIMARY KEY (ID)
);
我想将 APPLIED_ON
列从 TIMESTAMP_LTZ(9)
更改为 TIMESTAMP_NTZ(9)
。我读过 https://docs.snowflake.com/en/sql-reference/sql/alter-table-column.html。从那里我收集到我应该执行
alter table lightsaber alter APPLIED_ON set data type TIMESTAMP_NTZ ;
但是它输出错误
SQL compilation error: cannot change column APPLIED_ON from type TIMESTAMP_LTZ(9) to TIMESTAMP_NTZ(9)
我尝试了一些其他变体但没有成功。
不幸的是,这不起作用,因为(根据文档)在 alter 中为列设置 TYPE 时,指定的类型(即类型)必须是 NUMBER 或文本数据类型(VARCHAR、STRING、TEXT、等)并且对于如何使用它也有一些限制 - 事情是 Snowflake 不会自动知道如何进行数据转换,因此更改数据类型的选项不完整。
也许可以尝试更复杂的方法,即添加具有所需数据类型的新列、复制数据并删除旧列?