我正在尝试完成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
到目前为止我尝试了什么:
cast(null as date) as date_field
中date_field
的每个日期,以确保它们是有效日期sys_calendar.calendar
检查类型,它们都变成'日期'类型有什么想法吗?
答案 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