如何在SAS中实现dd-mmm-yyyy格式日期转date9格式
SAS日期格式转换解决方案
你写的New date = input(compress(date,'-'),date9.);逻辑本身没有问题,已经实现了将字符型日期转换为SAS内部数值型日期的操作,没有得到预期效果是因为你没有给新生成的日期字段指定显示格式,SAS默认会按通用数值格式输出,不会自动展示为01SEP2021样式。
方案1:需要保留日期类型用于后续计算
仅需额外加一行format语句指定显示格式即可:
/* 注意SAS变量名默认不支持空格,建议用下划线代替空格避免语法报错 */ New_date = input(compress(date,'-'), date9.); format New_date date9.;
完成后New_date为数值型日期字段,展示效果为01SEP2021,可直接用于日期计算、筛选等操作。
方案2:仅需得到字符型结果,不需要日期计算
不需要做类型转换,直接压缩掉原字符串中的横杠即可,代码更精简:
New_date_char = compress(date, '-');
输出的New_date_char为字符型字段,值直接就是01SEP2021。
特殊场景补充
如果你的原始date字段本身就是数值型日期,仅需要调整显示格式,不需要做任何转换操作,直接添加format语句即可:
format date date9.;
内容的提问来源于stack exchange,提问作者Freaky_foxx
相关产品推荐
相关产品推荐

