无法插入mmddyy10。 format proc sql

时间:2017-01-05 15:50:17

标签: sql date sas sql-insert

我有一个包含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),则插入时没有错误,如********

1 个答案:

答案 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;