PROC SQL 在 SAS 中连接数字并将格式设置为日期 - SAS E Guide 5.1

PROC SQL Concat numbers in SAS and format as date - SAS E Guide 5.1

大家早上好,

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

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

我厌倦了重新排列 year/day/month,并尝试在它们之间添加和不添加“-”。尽管如此,我只是在每一行中得到一个时期。

值得注意的是,数字在没有任何日期格式尝试的情况下,仅由它们自己连接时看起来很好。但是我需要他们的列成为数据所用于的过程的 DATE 列。

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

^无论是否使用“-”分隔数字看起来都不错。关于这一点,date9. 格式不是绝对需要的日期格式,我真的只需要它是某种日期。

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

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

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

只是为了向您解释为什么您的代码不起作用。

日期9。您正在使用的信息格式需要一个月的条目,例如 "Jan"、"Feb" 等。但是您将一个数字传递给信息格式 (z2.)。如果您更改日期 9。输入 ddmmyy10 即可。