SAS日期格式mmddyy8

编程语言 2026-07-12

在Windows 11 Enterprise的 PC上运行的SAS 9.4中,需要一个mmddyy8.格式的SAS日期。
下面的代码确实可以推导出变量dt所在当前季度的月份的第一天日期(记为“Q_start”)。
如果我不想要dt的当前季度,我可以把intnx函数的偏移量改为 -1、-2、0、1、2、3等等。

        Data _null_;
        dt = '01MAR26'd;
         Q_start=intnx('quarter',dt, -0);

          call symputx('dtip',vvalue(dt));
          call symputx('Q_Start',put(Q_start);
          format Q_start mmddyy8.;
          format dt mmddyy8.;
             run;

            %put NOTE: &=dtip;
            %put NOTE: &=q_start;

不管我对Q_START进行多少次格式化,日志里它总是显示xx/xx/xx:

132
133  %put NOTE: &=dtip;
NOTE: DTIP=03/01/26
134   %put NOTE: &=q_start;
NOTE: Q_START=01/01/26

如何把日期格式改成mmddyy8.,以便在其他遗留的SAS代码中使用?

解决方案

MMDDYY格式始终使用斜杠作为分隔符。你需要改用MMDDYYN格式。N代表没有分隔符。

因此,如果变量Q_START的值是一个日期,你可以使用MMDDYYN8.的格式规范来生成一个8 位的数字字符串,格式为MMDDYYYY。

PUT() 函数需要两个参数:要格式化的值VALUE,以及要使用的FORMAT规范。

call symputx('Q_Start',put(Q_start,mmddyyn8.));
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章