【问题标题】:Converting YYYYMMDD8 to DATE9 format?将 YYMMDDN8 转换为 DATE9 格式?
【发布时间】:2020-01-30 18:03:55
【问题描述】:

我需要将 YYYYMMDD 格式的字符串转换为 SAS 中的数字 DATE9 格式。

我可以将字符串转换为 YYYYMMDD8,但我很难将其转换为 DATE9 格式。我认为这只是为变量输入格式语句并将其设置为 DATE9 的情况,因为它已经是数字日期格式,但这样做只会产生星号。

我试图重现一些示例代码。提供了数据集 date1。我已将其转换为 YYYYMMDD8。按照第 2 步。这是第 3 步,我无法开始工作。我已经尝试过类似问题的答案所提供的公认解决方案,但我无法让它发挥作用。所以我可能做错了什么。

简而言之,我需要第 3 步的工作版本,或简化的第 2 步,一步将字符串转换为 date9。

* STEP 1 - Provided;
data date1;
    FORMAT file_date $8.;
    file_date = '20191209';
run;

* Step 2 - Convert to YYYYMMDD8.;
PROC SQL;
    CREATE TABLE date2 AS
    SELECT INPUT(file_date,yyyymmdd8.) AS file_date2 FORMAT YYYYMMDD8.
    FROM date1;

* Step 3 - Convert to DATE9. (Results in asterisks in place of the actual date);
DATA date3;
    SET date2;
    FORMAT file_date3 date9.;
    file_date3 = file_date2;
RUN;

【问题讨论】:

    标签: date sas type-conversion


    【解决方案1】:

    这里的问题是yyyymmdd 格式不存在,它只是yymmdd。为简单起见,使用 SAS 日期,您应该使用anydtdte 格式的信息。所以第2步可以简化为:

    proc sql;
    create table date2 as
    select input(file_date,anydtdte8.) as file_date2 format=date9.
    from date1;
    quit;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 2018-12-23
      • 1970-01-01
      相关资源
      最近更新 更多