我正在将数据从teradata迁移到Snowflake我已经将teradata的DDL转换为Snowflak(在roboquery中检查(。
当我在Snowflake中运行转换后的ddl时,我在默认值DATE上得到一个错误。
CREATE OR REPLACE TABLE XXX.YYYY
(
ID NUMBER(8) NOT NULL,
DERN TIMESTAMP(0) ,
OBSDATE TIMESTAMP(0) NOT NULL,
DATFULL DATE DEFAULT DATE
);
我得到了这个错误:
运行Liquibase时出现意外错误:SQL编译错误:位置25处的错误行5无效标识符"DATE"[失败的SQL:(904(?
为什么会出现此错误-Snowflake使用DATE?
使用current_date是否有任何风险(在@Marcel第一次回答后更新的帖子(。
感谢
我想您想使用CURRENT_DATE作为默认值?
这就是代码:
CREATE OR REPLACE TABLE XXX.YYYY (
ID NUMBER(8) NOT NULL,
DERN TIMESTAMP(0) ,
OBSDATE TIMESTAMP(0) NOT NULL,
DATFULL DATE DEFAULT CURRENT_DATE);
基于文档Terradata-DEFAULT:
此表单…
默认日期引用插入…
通过引号指定的日期值作为date列的默认值。
默认当前日期
当前系统日期
Snowflake:支持日期文字(DATE 'some_date'
(
CREATE OR REPLACE TABLE YYYY (
ID NUMBER(8) NOT NULL,
DERN TIMESTAMP(0) ,
OBSDATE TIMESTAMP(0) NOT NULL,
DATFULL DATE DEFAULT DATE '1900-01-01' -- any specific date here
);
日期和时间常数:
常量(也称为文字(是指固定的数据值。Snowflake支持使用字符串常量来指定固定的日期、时间或时间戳值。字符串常量必须始终包含在分隔符之间。
date '2010-09-14' time '10:03:56' timestamp '2009-09-15 10:59:43'
综上所述,取决于要求:DEFAULT DATE 'YYYY-MM-DD'
或是否必须是当前日期DEFAULT CURRENT_DATE
。