SAS中的PROC SQL Concat编号和格式为日期 - SAS E Guide 5.1

时间:2015-12-24 14:12:06

标签: sas proc-sql enterprise-guide

早上好,

我在数据集中有3个不同的列,表示月份,日期和年份作为数字。我现在的问题是在PROC SQL中将它们连接在一起,同时将它们格式化为日期。到目前为止,我已尝试过以下内容,但我只得到将每个日期显示为句点(“。”)的结果。您会注意到我必须将它们转换为字符才能连接它们。

PROC SQL;
    SELECT
        INPUT(PUT(f.MTH,z2.) || '-' || PUT(f.DAY,z2.) || '-' || PUT(f.YR,z4.),date9.)
    FROM
        table f
;QUIT;

我累了重新排列年/日/月,并尝试使用和不使用' - '。不过,我只是在每一行都有一段时间。

值得注意的是,数字看起来很好,只是自己连接,没有任何日期格式化的尝试。但是我需要将它们的列作为数据用于进程的DATE列。

PUT(f.YR,z4.)|| PUT(f.MTH,z2.) ||PUT(f.DAY,z2.)

^看起来很好,有没有' - '分隔数字。在这方面, date9。格式不是绝对需要的日期格式,我真的只需要它是某种日期。

我在这里缺少什么?我不应该如此依赖PROC SQL来做这件事吗?

1 个答案:

答案 0 :(得分:1)

使用MDY功能,因为变量已经是数字,我认为它是最好的选择。

proc sql;
select 
    mdy(12,1,2015) format ddmmyy10. as DAY_DATE_FORMAT
from table;
quit;

向您解释为什么您的代码无效。

日期9。您正在使用的信息预计会有一个月的条目,例如" Jan"," Feb"等等。但您将一个数字传递给信息(z2。)。如果您更改date9。在你输入的ddmmyy10中,它会起作用。