我有一个雪花数据库表,目前的定义如下
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.comensql-referencesqlalter-table-column.html。. 我从那里得知,我应该执行
alter table lightsaber alter APPLIED_ON set data type TIMESTAMP_NTZ ;
但它输出的错误是
SQL编译错误:无法将列APPLIED_ON从类型TIMESTAMP_LTZ(9)改为TIMESTAMP_NTZ(9)。
我已经尝试了一些其他的变化,但没有成功。
不幸的是这是行不通的,因为(根据文档)当在alter中设置列的TYPE时,指定的类型(即type)必须是NUMBER或文本数据类型(VARCHAR、STRING、TEXT等),而且在如何使用上也有一些限制--事情是Snowflake并不能自动知道如何进行数据转换,所以改变数据类型的选项并不全。
也许可以尝试更复杂的路径,即添加一个具有所需数据类型的新列,复制数据并删除旧列?