我想要将值插入到一个新表中,但我一直收到相同的错误: values子句1尝试插入的列多于在insert表名后面指定的列。这是如果我不在我的约会对象后面加上撇号的话。如果我放了撇号,那么我会被告知第二个值的数据类型不对应。
proc sql;
create table date_table
(cvmo char(6), next_beg_dt DATE);
quit;
proc sql;
insert into date_table
values ('201501', 2015-02-01)
values ('201502', 2015-03-01)
values ('201503', 2015-04-01)
values ('201504', 2015-05-01);
quit;第二个值必须保留为日期,因为它稍后与>和<符号一起使用。我认为问题可能是2015-02-01不是一个有效的日期格式,因为我在SAS网站上找不到它,但我宁愿不更改我的整个表。
发布于 2018-11-08 05:13:33
日期文字(常量)由右引号后紧跟字母d的带引号的字符串组成。该字符串的格式必须对DATE信息格式有效。
'01FEB2015'd
"01-feb-2015"d
'1feb15'd如果您真的想插入一系列日期,那么只需使用带有DO循环的数据步骤。此外,请确保将众多日期格式中的一种附加到日期值,以便将它们打印为人类可以理解的文本。
data data_table ;
length cvmo $6 next_beg_dt 8;
format next_beg_dt yymmdd10.;
do _n_=1 to 4;
cvmo=put(intnx('month','01JAN2015'd,_n_-1,'b'),yymmn6.);
next_beg_dt=intnx('month','01JAN2015'd,_n_,'b');
output;
end;
run;

发布于 2018-11-08 06:17:27
@tom在评论中建议你如何使用date,并给出了非常好的答案,如何有效地使用它,这比输入值更不容易出错。我只是将其放入insert语句中。
proc sql;
create table date_table
(cvmo char(6), next_beg_dt DATE);
quit;
proc sql;
insert into date_table
values ('201501', "01FEB2015"D)
;https://stackoverflow.com/questions/53196793
复制相似问题