如何定义适用于 ALTER TABLE ADD COLUMN
的常量/日期文字?
根据文档:
<块引用>常量(也称为文字)是指固定的数据值。 Snowflake 支持使用字符串常量来指定固定的日期、时间或时间戳值。字符串常量必须始终包含在分隔符之间。 Snowflake 支持使用单引号分隔字符串常量。
例如:
date '2010-09-14'
和
<块引用> ADD COLUMN col_name col_data_type [ DEFAULT | AUTOINCREMENT ... ] [ inlineConstraint ] [, ...]
向表中添加新列,包括可选地为列添加默认和/或内联约束:有关列默认值的其他详细信息,请参阅CREATE TABLE
...
DEFAULT <expr>
列默认值由指定的表达式定义,可以是以下任何一种:
恒定值。
简单的表达
序列参考(seq_name.NEXTVAL)
对于现有表 t:
CREATE TABLE t(d DATE);
INSERT INTO t(d) VALUES ('2000-01-01');
SELECT * FROM t;
-- D
-- 2000-01-01
-- addding new columns with default value works fine for these data types
ALTER TABLE t ADD COLUMN d2 INT DEFAULT 1;
ALTER TABLE t ADD COLUMN d3 STRING DEFAULT 'some string';
让我们尝试添加带有默认值的新日期列:
ALTER TABLE t ADD COLUMN d1 DATE DEFAULT '2000-01-01';
-- SQL compilation error: Default value data type does not match data type for column D1
ALTER TABLE t ADD COLUMN d1 DATE DEFAULT '2000-01-01'::DATE;
-- SQL compilation error: Invalid column default expression [CAST('2000-01-01' AS DATE)]
ALTER TABLE t ADD COLUMN d1 DATE DEFAULT date '2000-01-01';
-- SQL compilation error: Invalid column default expression [CAST('2000-01-01' AS DATE)]
-- default value during creation is possible
CREATE OR REPLACE TABLE t(d DATE DEFAULT date '2000-01-01');
似乎应该是日期文字的date '2000-01-01'
被视为表达式[CAST('2000-01-01' AS DATE)]
,这不是一个简单的表达式。
它适用于 CREATE TABLE 的上下文,但不适用于 ALTER TABLE 的上下文。
有没有办法为 DATE 列提供适用于 ALTER TABLE
的常量/简单表达式?