2665 - Teradata中的日期错误无效

时间:2017-06-05 20:53:25

标签: sql teradata

我正在尝试完成insert into语句,但结果导致出现“Invalid Date”错误。

我的创建声明:

CREATE MULTISET TABLE Date_Table,
    NO FALLBACK ,
    NO BEFORE JOURNAL,
    NO AFTER JOURNAL,
    CHECKSUM = DEFAULT,
    DEFAULT MERGEBLOCKRATIO
     (
      customer_field,
      date_field DATE FORMAT 'YYYY-MM-DD',
      other_fields
     )
PRIMARY INDEX ( date_field );

我的插入声明:

INSERT INTO Date_Table
select
  a.customer_field,
  a.CAST (date_field AS DATE FORMAT 'yyyy-mm-dd'),
  a.other_fields
from a

到目前为止我尝试了什么:

  • 使{_ 1}}
  • 的date_field为空
  • 检查cast(null as date) as date_fielddate_field的每个日期,以确保它们是有效日期
  • sys_calendar.calendar检查类型,它们都变成'日期'类型

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

创建Date_Table时,指定的数据类型为date。可能是table a的数据类型为VARCHAR,与Date_Table不匹配。这就是您无法运行INSERT语句的原因。我们可以选择CAST

INSERT INTO Date_Table
select
  a.customer_field,
  a.CAST (cast(date_field as varchar(8)) AS DATE FORMAT 'yyyy-mm-dd'),
  a.other_fields
from a

答案 1 :(得分:0)

我遇到了同样的问题,但是我发现它与日期字段的内容无关。在我的情况下,“ create table”属性和“ insert”属性的顺序不相同,这导致了该错误声明。

因此,例如:

create multiset table database.table ,fallback ,
     no before journal,
     no after journal,
     checksum = default,
     default mergeblockratio
     ( 
      selection_dttm date,
      strategy_nm varchar(30) character set latin not casespecific
     );

,然后以不同顺序在insert语句中添加2个属性:

insert into database.table
select 
    strategy_nm,
    selection_dttm
from source_table