我有一个包含as_of_date列的表,其格式为MMDDYY10。在SAS 7.1中
proc sql;
INSERT INTO mytable (as_of_date)
VALUES (12/31/2016);
run;
我收到以下错误:
错误22-322:语法错误,期望以下之一:带引号的字符串,数字常量,日期时间常量,
缺少值,),+,',', - ,MISSING,NULL,USER。
ERROR 200-322:符号无法识别,将被忽略。
注意:如果我将值更改为12/31/16,它仍然不起作用。如果我在它周围加上引号('12 / 31/2016'),我会收到错误:
错误:VALUES子句1的值1与对象项列表中相应列的数据类型不匹配(在SELECT中)
子句)。
如果我插入没有斜线(12312016),则插入时没有错误,如********
答案 0 :(得分:1)
您需要在引号和d
修饰符中使用DDMMMYYYY格式:
proc sql noprint;
INSERT INTO mytable (as_of_date)
VALUES ("31dec2016"d);
quit;
另一种看待它的方法是SAS正在寻找日期格式下的数值。您可以检查实际值并使用以下代码获得相同的结果:
data check;
date = "31dec2016"d;
run;
proc sql noprint;
INSERT INTO mytable (as_of_date)
VALUES (20819);
quit;