【问题标题】:SAS date format returning censoredSAS 日期格式返回审查
【发布时间】:2018-03-14 08:14:40
【问题描述】:

我有一个名为 Last Payment 的列

last payment
12DEC09:00:00:00

所有的观察都遵循这个结构,我尝试使用这样的子字符串

data want;
set have;
last_payment=substr(last_payment,1,7);
run;

这不起作用,我尝试使用 date7 格式化日期。和 date.9 但都只返回 ********,有人可以帮我将其格式化为 ddmmmyy ty。

【问题讨论】:

    标签: date datetime format informat sas-studio


    【解决方案1】:

    在 date7 中格式化之前必须使用 datapart 函数。或日期9。 示例:

    data new;
    format date_new date9. ;
    date_new = datepart("12DEC09:00:00:00"dt);
    run;
    

    【讨论】:

    • 如果整个数据集中的所有日期/时间都不同,我可以在“”中使用 * 吗?
    • 您需要将“12DEC09:00:00:00”dt 替换为列名。
    【解决方案2】:

    被删减的文本意味着使用了错误的格式。

    • 如果 last_payment 是一个字符串,则将“datetime_as_string”替换为 last_payment。
    • 如果 last_payment 是 datetime,则将“datetime_as_dt”替换为 last_payment。

    下面的代码将处理您将日期时间读取为字符串和数值的两种情况。

    代码:

    data new;
    format  datetime_as_dt datetime21. dt_to_date date7. datetime1 date7.;
    datetime_as_dt="12DEC09:00:00:00"dt;
    datetime_as_string ="12DEC09:00:00:00";
    /*Converting datetime to date*/
    dt_to_date= datepart(datetime_as_dt);
    /*converting datetime string to date*/
    /*Option1: Convert string to datetime then extract date*/
    datetime1 = datepart(input(datetime_as_string,datetime21.));
    /*Option2: Extract date from string then convert to date*/
    datetime2 = scan(datetime_as_string,1,':');
    put _all_;
    run;
    

    日志:

    datetime_as_dt=12DEC2009:00:00:00 
    datetime_as_string=12DEC09:00:00:00
    dt_to_date=12DEC09 
    datetime1=12DEC09  
    datetime2=12DEC09
    

    表已创建:

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2013-01-11
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多