【问题标题】:How to reformat dates?如何重新格式化日期?
【发布时间】:2019-06-30 18:08:28
【问题描述】:

您好,目前我的日期以 40547 的形式存储为数字。如何将这些转换为 MMDDYY10。?

data SevenSec11;
      set Seven11;
      DateRecieved = input(put(DateRecieved, 8.), MMDDYY10.);
      format DateRecieved MMDDYY10.;
 run;

【问题讨论】:

  • 40,547 代表什么日期? SAS 将日期存储为自 1960 年以来的天数,因此应该是 2071 年。如果您知道这些数字的基础是什么,那么只需减去正确的数字。
  • 这个日期是否代表 04/05/1947?

标签: date sas format


【解决方案1】:

如何转换取决于值代表什么。如果是 Excel 存储的日期,则更改偏移值。如果它应该表示 MMDDYY 值,则在您的 PUT() 函数调用中使用 Z6. 格式。

data test;
  input num ;
  sasdate1 = num + '30DEC1899'd ;
  sasdate2 = input(put(num ,z6.),mmddyy10.);
  format num comma7. sasdate: yymmdd10. ;
cards;
40547
;

结果:

Obs        num      sasdate1      sasdate2

 1      40,547    2011-01-04    1947-04-05

请注意,对日期使用 Y-M-D 顺序将消除截断前导零可能导致的混淆。它还可以防止一半的观众混淆 4 月 5 日和 5 月 4 日。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-22
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多