转换SAS DATE并在PROC SQL中使用

时间:2019-01-28 18:53:45

标签: sas

我在SAS Enterprise Guide 7.1 M4中的DATE遇到问题。

在SQL Server或VBA中非常简单,但在SAS中让我发疯。

问题: 由于某些奇怪的原因,我无法进行简单的选择。我尝试了许多不同形式的格式化和转换,但是任何一种似乎都有效 我的简单选择不返回任何观察结果。

proc内容中 T1.DT_DATE 的描述 类型:数字 伦:8 格式:DDMMYY10。 信息:DATETIME20。

%let DATE_EXAMPLE='01JAN2019'd;

data _null_;
      call symput ('CONVERTED_DATE',put(&DATE_EXAMPLE, ddmmyy10.));
run;

%put &CONVERTED_DATE;

PROC SQL;
    CREATE TABLE TEST_SELECT AS 
        SELECT * 
        FROM MY_SAMPLE_DATA as T1
        WHERE T1.DT_DATE = &CONVERTED_DATE
;QUIT;

1 个答案:

答案 0 :(得分:1)

最初,您正确设置了日期,但是将其更改为where子句中无法理解的其他值。查看您创建的两个宏变量的宏变量分辨率

%put value of my earlier date value  is &DATE_EXAMPLE;
value of my earlier date value  is '01JAN2019'd
%put value of my current date value is &CONVERTED_DATE;
 value of my current date value is 01/01/2019

将代码更改为使用日期文字“ 01JAN2019”,然后您的代码即可使用。 01/01/2019值在where子句中没有意义。

PROC SQL;
CREATE TABLE TEST_SELECT AS 
    SELECT * 
    FROM MY_SAMPLE_DATA as T1
    WHERE T1.DT_DATE = &CONVERTED_DATE
;QUIT;