【问题标题】:PROC SQL Concat numbers in SAS and format as date - SAS E Guide 5.1SAS 中的 PROC SQL Concat 数字和日期格式 - SAS E Guide 5.1
【发布时间】:2015-12-24 14:12:06
【问题描述】:

大家早上好,

我在一个数据集中有 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. 格式并不是绝对需要的日期格式,我真的只需要它是某种 DATE。

我在这里缺少什么?我不应该如此依赖 PROC SQL 来执行此操作吗?

【问题讨论】:

    标签: sas proc-sql enterprise-guide


    【解决方案1】:

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

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

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

    日期9。您正在使用的信息需要一个月份条目,例如“Jan”、“Feb”等。但是您正在将一个数字传递给信息 (z2.)。如果您更改日期9。在您的输入中添加到 ddmmyy10,它将起作用。

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多