Ошибка компиляции Snowflake SQL: невозможно изменить столбец с типа TIMESTAMP_LTZ (9) на TIMESTAMP_NTZ (9) - PullRequest
0 голосов
/ 05 мая 2020

У меня есть таблица базы данных снежинок, в настоящее время определенная как

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)

Я безуспешно пробовал несколько других вариантов.

1 Ответ

1 голос
/ 06 мая 2020

К сожалению, это не сработает, поскольку (согласно документации) при установке TYPE для столбца в alter указанный тип (т.е. тип) должен быть NUMBER или типом текстовых данных (VARCHAR, STRING, TEXT и т. Д. c.), И есть некоторые ограничения на то, как это можно использовать - дело в том, что Snowflake автоматически не знает, как выполнять преобразование данных, поэтому параметры для изменения типов данных не полны.

возможно, попробуйте больше сложный путь добавления нового столбца с желаемым типом данных, копирования данных и удаления старого столбца?

...