Snowflake SQL编译错误:无法将列从类型TIMESTAMP_LTZ(9)改为TIMESTAMP_NTZ(9)。

问题描述 投票:0回答:1

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

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_ONTIMESTAMP_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)。

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

ddl
1个回答
1
投票

不幸的是这是行不通的,因为(根据文档)当在alter中设置列的TYPE时,指定的类型(即type)必须是NUMBER或文本数据类型(VARCHAR、STRING、TEXT等),而且在如何使用上也有一些限制--事情是Snowflake并不能自动知道如何进行数据转换,所以改变数据类型的选项并不全。

也许可以尝试更复杂的路径,即添加一个具有所需数据类型的新列,复制数据并删除旧列?

© www.soinside.com 2019 - 2024. All rights reserved.