默认 DATE Snowflake:标识符无效 'DATE'

Default DATE Snowflake: invalid identifier 'DATE'

我正在将数据从 Teradata 迁移到 Snowflake 我已经将 Teradata 的 DDL 转换为 Snowflake(在 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
);

我遇到了这个错误:

Unexpected error running Liquibase: SQL compilation error: error line 5 at position 25 invalid identifier 'DATE' [Failed SQL: (904)?

为什么会出现此错误 - Snowflake 使用 DATE?

使用 current_date 是否有任何风险(在 @Marcel 的第一个回答后更新 post)。

谢谢

我假设你想使用 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

This form...
DEFAULT DATE quotestring

Inserts …
the date value specified by quotestring as the default for the column DATE.


DEFAULT CURRENT_DATE

the current system 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
);

Date and Time Constants:

Constants (also known as literals) refers to fixed data values. Snowflake supports using string constants to specify fixed date, time, or timestamp values. String constants must always be enclosed between delimiter characters.

date '2010-09-14'
time '10:03:56'
timestamp '2009-09-15 10:59:43'

总而言之,取决于要求:DEFAULT DATE 'YYYY-MM-DD' 或者如果它必须是当前日期 DEFAULT CURRENT_DATE