首页 > 解决方案 > Snowflake SQL 编译错误:无法将列从类型 TIMESTAMP_LTZ(9) 更改为 TIMESTAMP_NTZ(9)

问题描述

我有一个雪花数据库表,当前定义如下

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 编译错误:无法将 APPLIED_ON 列从类型 TIMESTAMP_LTZ(9) 更改为 TIMESTAMP_NTZ(9)

我尝试了其他一些变化,但没有成功。

标签: ddl

解决方案


不幸的是,这不起作用,因为(根据文档)在 alter 中为列设置 TYPE 时,指定的类型(即类型)必须是 NUMBER 或文本数据类型(VARCHAR、STRING、TEXT 等)并且存在对如何使用它也有一些限制 - 雪花不会自动知道如何进行数据转换,因此更改数据类型的选项并不完整。

也许尝试添加具有所需数据类型的新列、复制数据和删除旧列的更复杂的路径?


推荐阅读