【问题标题】:Converting a date variable into a character variable in SAS在SAS中将日期变量转换为字符变量
【发布时间】:2015-01-23 17:06:28
【问题描述】:

我有一个当前格式为 date9 的日期变量,我想将其转换为特定的字符格式。

我希望日期值02DEC2013 以字符格式显示为:021213

【问题讨论】:

  • 到目前为止你尝试过什么?请表明您在提出 SO 之前至少已经付出了一些努力和研究。
  • 使用“ddmmyy6”。格式
  • 好吧,我什么都没试过,因为我不知道该怎么做。我最终这样做了: pbgtp0=compress(20||substr(startdato,5,2)||substr(startdato,3,2)||substr(startdato,1,2)); pbgtp=pbgtp0*1; - 它奏效了。

标签: date sas character converter


【解决方案1】:

put 函数将数字转换为字符格式不变;所以数字日期很容易被固定为一个字符。

您要查找的另一部分是正确的日期格式。看起来像这样:MMDDYYNw. 将满足您的需求。

玩得开心!

【讨论】:

  • 如果我写 startdato2=put(startdato);在一个数据步中(我希望具有 date9.format 的 startdato 成为 startdato2 中的字符值),SAS 给出错误:ERROR 388-185: Expecting an algorithm operator。
  • 数据临时;格式 startdato date9.; startdato = '09Jun12'd;跑步;您还需要添加格式。数据 temp2;设定温度; startdato2 = put(startdato,date9.);运行;
  • 当我运行你的例子时它可以工作,但是当我在我自己的数据上使用它时 startdato2 仍然在 date9 中。格式?数据测试;格式 startdato date9.;设置 begge_steder_kobl2; startdato2 = put(startdato,date9.);运行;
  • 如果数据集上已经定义了 startdato2,put 不会改变格式。如果它已经存在,请确保将其从数据集中删除。
  • 啊,它被转换了,但格式不是我想要的。 09Jun12 应该是 090612 - 06 而不是 jun。我希望它是 12 而不是 2012
【解决方案2】:

不确定是否有任何内置 SAS 格式会以您期望的格式提供结果,但下面的代码可能会对您有所帮助!

data _null_;
Input_='02DEC2013'd;
output_=put(put(day(Input_),z2.)||put(month(Input_),z2.)||substr(left(year(Input_)),3,2),$6.);
put output_=;
run;

【讨论】:

    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多