早上好,
我在数据集中有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来做这件事吗?
答案 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中,它会起作用。