【问题标题】:can't insert mmddyy10. format proc sql无法插入 mmddyy10。格式化proc sql
【发布时间】:2017-01-05 15:50:16
【问题描述】:

我有一个表格,其列 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。

错误 200-322:符号无法识别,将被忽略。

注意:如果我将值更改为 12/31/16,它仍然不起作用。如果我在它周围加上引号('12/31/2016'),我会收到错误消息:
错误:VALUES 子句 1 的值 1 与对象项列表中相应列的数据类型不匹配(在 SELECT 子句)。

如果我不带斜杠 (12312016) 插入,则插入时不会出现错误,因为 ********

【问题讨论】:

    标签: sql date sas sql-insert


    【解决方案1】:

    您需要在引号内使用 DDMMMYYYY 格式和 d 修饰符:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多